2010-05-11 3 views
19

У меня есть действие выхода из системы на контроллере, как так:ASP.NET MVC действительно выйти с помощью форм проверки подлинности

public ActionResult Logoff() 
    { 
     var x = Request.IsAuthenticated; 
     var y = User.Identity.IsAuthenticated; 

     FormsAuthentication.SignOut(); 
     Session.Abandon(); 

     var a = Request.IsAuthenticated; 
     var b = User.Identity.IsAuthenticated; 

     return View(); 
    } 

Однако, х, у, а, б, все верно. Поэтому, когда мой просмотр визуализирует, он все еще ведет себя так, как будто пользователь вошел в систему. Может ли кто-нибудь предложить вам решение и/или объяснение?

ответ

42

FormsAuthentication.SignOut() удаляет куки аутентификации, так что вам нужно перенаправить после него вместо возвращения вид так, чтобы клиент уведомляется:

public ActionResult Logoff() 
{ 
    FormsAuthentication.SignOut(); 
    return RedirectToAction("Index"); 
} 

Сейчас в Index действий пользователя больше не будет проходить проверку подлинности.

+3

Дарин справа на. То, что я делаю время от времени, - это возврат «Перенаправление возврата» (FormsAuthentication.LoginUrl); Это отправит пользователя обратно на страницу входа в систему, которую вы объявляете в области проверки подлинности в вашем web.config. То же самое действительно ... –

Смежные вопросы