Сохраняю всю сессию в базе данных.Давайте представим, что этот сеанс был потерян в базе данных, а не в файлах cookie.
В OnAuthorization (AuthorizationContext filterContext) я получаю объект пользователя из базы данных по идентификатору сеанса.
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 даже после перенаправления.
Как избежать этой ошибки?
Спасибо!:)