22

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

    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 都是正确的。因此,当我的视图呈现时,它仍然表现得好像用户已登录。有人可以提供解决方案和/或解释吗?

4

1 回答 1

47

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

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

现在在Index操作中,用户将不再被验证。

于 2010-05-11T11:58:01.753 回答