ASP.NET MVC действительно выходит из системы с помощью проверки подлинности с помощью форм - PullRequest
20 голосов
/ 11 мая 2010

У меня есть действие выхода из системы на контроллере:

    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();
    }

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

1 Ответ

44 голосов
/ 11 мая 2010

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

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

Теперь в действии Index пользователь больше не будет проходить аутентификацию.

...