web-dev-qa-db-ja.com

ASP.NETMVCはフォーム認証で本当にログオフします

私は次のようにコントローラーでログオフアクションを持っています:

    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はすべて真です。したがって、ビューがレンダリングされても、ユーザーがログインしているかのように動作します。誰かが解決策や説明を提供できますか?

22
CodeGrue

FormsAuthentication.SignOut()は認証Cookieを削除するため、クライアントに通知されるようにビューを返すのではなく、認証Cookieの後にリダイレクトする必要があります。

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

これで、Indexアクションで、ユーザーは認証されなくなります。

46
Darin Dimitrov