0

次のコード行を使用して、ログアウト後のブラウザの戻るボタンの問題を無効にしていますasp.net MVC4.

[OutputCache(NoStore = false, Duration = 0, VaryByParam = "None")] 
        public ActionResult Logout()
        {
            try
            {
                if (Session["username"] != null)
                {
                    Session.Abandon();
                    Session.Clear();
                    Session.RemoveAll();
                    Session["username"] = null;
                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
                    Response.Cache.SetNoStore();
                    return RedirectToAction("Index", "AdminPanel");
                }

               return RedirectToAction("Error", "Home");
            }
            catch (Exception e)
            {
                return RedirectToAction("Error", "Home");
            }
        }

しかし、このコードには 1 つの問題があります。最初の 3 つのページがログイン ページ(Index.cshtml)で、2 番目のページが正常にログインしたページ(home.cshtml)で、3 番目のページが about pageであると仮定すると、ログインすると、次に進むとページ(about.cshtml)にリダイレクトされます。 home.cshtml3番目のページabout.cshtmlの後、ページからログアウトすると、about.cshtmlページにリダイレクトされlogin.cshtmlます。そして今、ブラウザの戻るボタンをクリックすると、about.cshtmlページに再びリダイレクトされますが、ユーザーは何も変更または追加できませんでした。この問題を解決するための適切なコードまたは方法があるかどうか教えてください。

4

1 に答える 1

0

これを about.cshtml をレンダリングするコントローラー メソッドに配置すると、次のように機能します。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();

理想的ではありませんが、正しい軌道に乗せることができます。基本的に、ブラウザーはログインした時点から about.cshtml をキャッシュしています。ログアウト メソッドに応答をキャッシュしないように指示しても、レンダリングではなくリダイレ​​クトが実行されるため、あまり効果がありません。

于 2013-04-09T15:37:50.503 に答える