0

ログアウトしてログインページにリダイレクトするログアウトアクションがありますが、ログアウトせずにブラウザーを閉じ、ログアウト時に再度開くと、ログアウトアクションにアクセスせずにログインアクションに直接リダイレクトされます

    [OutputCache(NoStore=true, Duration=0)]
    public ActionResult LogOut()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();
        HttpContext.User = null;

        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);

        HttpCookie cookie3 = new HttpCookie("myCookie");
        cookie3.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie3);

        FormsAuthentication.RedirectToLoginPage();
        return null;
    }

ここに私のwebconfig設定があります

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LoginPage" 
           defaultUrl="~/User/MyKids" 
           timeout="99999999" 
           slidingExpiration="true" /> 
</authentication>
4

2 に答える 2

0

これがデフォルトの動作です。セッション Cookie でフォーム認証を使用していると思います。そのため、ブラウザを再度開いてログアウト ページにアクセスすると、forms-authentication-module は有効な Cookie がないことを検出し、ログイン ページにリダイレクトします。

ユーザーを記憶するために、createPersistentCookie を true に設定します

于 2014-03-14T14:41:54.460 に答える
0

「もう一度開く」の意味がわかりませんが、「ログイン」ユーザーを必要とするシステムの一部にアクセスしようとすると、システムは有効な認証を持っていないという事実を検出しています。構成で指定されたログイン ページにリダイレクトされます。ログアウトしようとするのではなく、ログインしようとするだけです。これは、この場合の通常の動作です。

于 2014-03-14T14:37:37.733 に答える