【发布时间】:2011-10-28 02:25:46
【问题描述】:
我将所有会话保存在数据库中。让我们假设这个会话丢失在数据库中,而不是在 cookie 中。
在 OnAuthorization(AuthorizationContext filterContext) 中,我根据会话 ID 从数据库中检索用户对象。
if (HttpContext.User.Identity.IsAuthenticated)
{
//Gets user data from DB.
var user = userRepos.GetUser(HttpContext.User.Identity.Name);
if (user != null)
{
CurrentUser = user;
Thread.CurrentPrincipal = HttpContext.User = new DibPrincipal(user);
return;
}
else
{
FormsAuthentication.SignOut();
Session.Abandon();
Response.Redirect(FormsAuthentication.LoginUrl, true);
}
}
}
假设用户调用了控制器 GetDocuments,但他被重定向到 FormsAuthentication.LoginUrl。它工作,用户被重定向,但我得到一个异常,它在 GetDocument 控制器中显示错误,因为 CurrentUser 不存在。所以 .net 尝试在重定向后调用 GetDocuments。
如何避免这个错误?
谢谢! :)
【问题讨论】:
标签: .net model-view-controller session authentication controller