代码之家  ›  专栏  ›  技术社区  ›  CodeGrue

ASP.NET MVC通过窗体身份验证真正注销

  •  20
  • CodeGrue  · 技术社区  · 15 年前

    我在控制器上有一个注销操作,因此:

        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 回复  |  直到 15 年前
        1
  •  44
  •   Darin Dimitrov    15 年前

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

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

    现在在 Index 操作将不再对用户进行身份验证。

    推荐文章