ASP.NET MVC真正使用Forms身份验证注销

Cod*_*rue 22 asp.net asp.net-mvc forms-authentication logout

我在控制器上有一个注销动作,如下所示:

    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();
    }
Run Code Online (Sandbox Code Playgroud)

但是,x,y,a和b都是正确的.因此,当我的视图呈现时,它仍然表现得好像用户已登录.有人可以提供解决方案和/或解释吗?

Dar*_*rov 46

FormsAuthentication.SignOut() 删除身份验证cookie,因此您需要在其后重定向而不是返回视图,以便通知客户端:

public ActionResult Logoff()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)

现在,在Index操作中,用户将不再进行身份验证.

  • 达林是对的.我有时做的是返回"返回重定向(FormsAuthentication.LoginUrl);" 这将把用户发送回您在web.config中的身份验证区域中声明的登录页面.真的一样...... (3认同)