即使在Logout()之后,IsAuthenticated也始终为true

时间:2016-09-16 09:00:42

标签: c# model-view-controller forms-authentication

我正在尝试在我的MVC应用程序中实现表单授权,并且在大多数情况下它工作正常。但是,当我触发我的Logout()方法时没有任何反应。我有

System.Web.HttpContext.Current.User.Identity.IsAuthenticated

在我的主页上,所以我可以看到它之后仍然登录。 以下是我的退出方法。

public ActionResult Logout(){
        TempData.Clear();

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

        HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
        cookie1.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie1);

        HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
        cookie2.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie2);

        HttpContext.User =new GenericPrincipal(new GenericIdentity(string.Empty), null);

        return RedirectToAction("Index", "Home");
    }

---编辑---

我添加了HttpContext.GetOwinContext().Authentication.SignOut(DefaultA‌​uthenticationTypes.A‌​pplicationCookie);

正如DGibbs推荐的那样,但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

好的,我发现了错误。

如果有其他人遇到这个问题并且他们已经尝试了人们说的话,请尝试检查项目的属性,显然我已经在那里启用了WindowsAuth并禁用了AnonymousAuth,但是一旦我将它们的工作转换为魅力。

enter image description here