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

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


person CodeGrue    schedule 11.05.2010    source источник


Ответы (1)


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

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

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

person Darin Dimitrov    schedule 11.05.2010
comment
Дарин прав. Что я делаю время от времени, так это возвращаю Redirect(FormsAuthentication.LoginUrl); Это отправит пользователя обратно на страницу входа в систему, которую вы указали в области аутентификации в вашем файле web.config. То же самое на самом деле... - person DM.; 11.05.2010