2016-09-16 4 views
0

Я пытаюсь реализовать авторизацию формы в своем приложении 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(DefaultA‌​uthenticationTypes.A‌​pplicationCookie);

как было рекомендовано DGibbs, но проблема остается.

+0

жаль, что говорил что-то было не так с форматированием, он добавляется в настоящее время. –

+0

Какую версию MVC вы используете? Мне удалось реплицировать вашу проблему, используя 'FormsAuthentication.SignOut();' однако используя: 'AuthenticationManager.SignOut (DefaultAuthenticationTypes.ApplicationCookie);' сделал трюк для меня. – DGibbs

+0

У моего AuthenticationManager нет каких-либо fucntions? :/ –

ответ

0

Хорошо, я нашел ошибку.

Если кто-то еще сталкивается с этой проблемой, и они попробовали то, что сказали люди, попробуйте проверить свойства проекта, по-видимому, я включил WindowsAuth там и отключил AnonymousAuth, но как только я переключил их вокруг своей работы как шарм.

enter image description here