2

ユーザーがログインしているときにセッション変数を保持します。そのため、ユーザーが btnLogout をクリックしたときに、すべてのセッションをクリアし、ユーザーをログアウトする必要があります!!!

セッションはクリアされますが、ログアウトした直後に IE で [戻る] ボタンをクリックすると、ログインしたままになります! つまり、ユーザーがまだログインしていた画面に戻ります。

ログアウト時の私のコード

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

これはなぜですか、どうすればこれを防ぐことができますか?

編集: Web ブラウザーでユーザーが [戻る] ボタンを押すのを無効にすることができるコードのオプションはありますか?

4

4 に答える 4

4

これをマスターの Page_Init に入れることができます:

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

これは、たとえば、ほとんどの銀行の Web サイトで行われていることなので、戻るボタンを効果的に使用することはできません。

于 2009-05-08T02:42:37.777 に答える
2

ページ上で以下を使用して、コードビハインド、JavaScript、またはHTMLのいずれかからページをキャッシュしないようにブラウザに指示する方法はいくつかあります。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

また、コードの後ろにpage_loadイベントを追加して、セッション変数が実際に存在することを確認することもお勧めします。

于 2009-05-07T09:35:37.590 に答える
1

ブラウザはページのキャッシュを保持しているため、単純に応答しても、ログインしているかどうかをサーバーに要求することはありません。HTTPS を使用して、キャッシュも保護されていることを確認する必要があります。

于 2009-05-07T09:30:20.580 に答える