Я пытаюсь реализовать авторизацию формы в своем приложении MVC и по большей части работает нормально. Однако, когда я запускаю метод Logout(), ничего не происходит. У меня естьIsAuthenticated всегда верен даже после выхода из системы()
System.Web.HttpContext.Current.User.Identity.IsAuthenticated
на моей странице, так что я могу видеть, что он по-прежнему регистрируется в после этого. Ниже мой метод выхода из системы.
public ActionResult Logout(){
TempData.Clear();
FormsAuthentication.SignOut();
Session.Abandon();
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
HttpContext.User =new GenericPrincipal(new GenericIdentity(string.Empty), null);
return RedirectToAction("Index", "Home");
}
--- Edit ---
Я добавил HttpContext.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
как было рекомендовано DGibbs, но проблема остается.
жаль, что говорил что-то было не так с форматированием, он добавляется в настоящее время. –
Какую версию MVC вы используете? Мне удалось реплицировать вашу проблему, используя 'FormsAuthentication.SignOut();' однако используя: 'AuthenticationManager.SignOut (DefaultAuthenticationTypes.ApplicationCookie);' сделал трюк для меня. – DGibbs
У моего AuthenticationManager нет каких-либо fucntions? :/ –