3

を使用して「ログアウト」リンクのセッションをクリアしようとしていSession.Abandon();ます。ログアウト後、ログインページにリダイレクトしましたが、ログアウト後もブラウザの戻るボタンで前のページにアクセスできました。どうすれば解決できますか?

4

4 に答える 4

1

あなたのコメントに基づいて、あなたのセッションは中止されました。

表示されているのは、ブラウザによってキャッシュに保存されたページの「スナップショット」です。コードビハインドで、ユーザーがページでタスクを実行できるようにする前に、有効なセッションがあることを確認する限り、問題はありません。

キャッシュを無効にする方法についてはさまざまな回答があります。そのため、戻るボタンを押しても前のページは表示されませんが、質問に関する限り、ログアウトしてセッションが終了しています...

于 2012-10-24T09:43:23.620 に答える
0

このコードを試してください:

// Code disables caching by browser. Hence the back browser button
// grayed out and could not causes the Page_Load event to fire 
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();

そこに配置したい場合は、aspxの形式で同様のものを追加できます。

<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">

または、ログアウトイベントでこれを設定できます。

protected void LogOut()   
{       
     Session.Abandon();       
     string nextpage = "Logoutt.aspx";       
     Response.Write("<script language="javascript">");             
     Response.Write("{");       
     Response.Write(" var Backlen=history.length;");       
     Response.Write(" history.go(-Backlen);");       
     Response.Write(" window.location.href='" + nextpage + "'; ");
     Response.Write("}");       
     Response.Write("</script>");   
}

参考のために参照してください:http: //www.codeproject.com/Tips/135121/Browser-back-button-issue-after-logout

于 2012-10-24T09:33:58.113 に答える
0

次のように、そのページのブラウザですべてのタイプのキャッシュを無効にする必要があります。

Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetNoStore();
Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0));
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma", "no-cache");
Response.Cache.AppendCacheExtension("must-revalidate, proxy-revalidate, post-check=0, pre-check=0");
于 2012-10-24T09:37:45.407 に答える
0

これをコードビハインドに配置してみてください:

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
于 2012-10-24T09:22:44.817 に答える