這裏是我會做:
在的global.asax.cs
protected void Application_PostAuthorizeRequest()
{
if (HttpContext.Current.User != null && HttpContext.Current.User.Identity != null && !string.IsNullOrEmpty(HttpContext.Current.User.Identity.Name))
{
HttpContext.Current.Items["User"] = userRepo.FetchByUsername(HttpContext.Current.User.Identity.Name);
}
}
public static CustomUser CurrentUser
{
get
{
return HttpContext.Current.Items["User"] as CustomUser;
}
}
那麼你有一個方便的靜態在它與當前用戶。這是一種骯髒但有效的方式。
當然,我真的會將用戶添加到我的IOC容器中,並通過啓用IOC的ControllerFactory將其注入到控制器中。這是「正確」的事情。
無論你做什麼,都不要使用基類!從長遠來看,使用靜態可能更容易維護,而不是創建一個龐大的基類,所有需要掌握的「便利」的東西。
那麼你如何避免混淆是否使用this.User或this.GetUser()? :) – 2010-07-27 05:47:04
@Anders Ekdahl,由返回類型。 – jfar 2010-07-27 12:23:24