0

asp.net でサイトを構築するプロジェクトに取り組んでいます。ログインページにセッションを使用すると問題が発生します。私のログインページはセッションをチェックして、ユーザーが以前にログインしたかどうかを確認します。ログイン フォームが表示されない場合は、ログインが許可されます。それ以外の場合は、ログアウト ボタンが表示されます。

すべてが正常に機能し、ログイン後、ページは default.aspx にリダイレクトされ、セッションが保存されました。ユーザーの名前がデフォルト ページに表示されるためです。しかし、デフォルトのページでブラウザの戻るボタンを押してログインページに戻ると、ログアウトボタンがあるはずの場所にログインフォームが表示されます。次に、f5を押すか、他のタブでログインページを開くと、ログアウトボタンで問題なく動作します。

誰かがこれで私を助けることができます! ありがとう、私の下手な英語でごめんなさい!:)

4

3 に答える 3

0

逆方向にナビゲートする場合、デフォルトでは、ページの状態はログイン前の状態になります。したがって、そのページを更新してセッションの状態を確認しない限り、できることはほとんどありません。

于 2013-06-19T08:51:11.213 に答える
0

ユーザーがログインしているかどうかを確認する場所 (「ログアウト」ボタンを表示するかどうかを決定する場所) にブレークポイントを配置し、ログイン後に戻ります。ページはキャッシュから読み込まれると確信しているため、ページはユーザーがログインする前とまったく同じように表示されます。おそらく、これには JavaScript ソリューションが必要になるでしょう。

誰かがhttp://forums.asp.net/t/1118630.aspxを試したいくつかの解決策で同じ問題をここに投稿しました

于 2013-06-19T09:01:10.083 に答える
0

ユーザーには、ブラウザのキャッシュにあるページがそのまま表示されます。そのため、ログアウトの代わりにログイン ボタンが表示されます。ページのキャッシュを無効にすることはできますが、サーバーの負荷が高くなります。私はセッションを失うことと関係があることに注意しています。

コメントのように awnser をより完全にするには:

protected void Page_Init(object sender, EventArgs e) 
{
  Response.Cache.SetCacheability(HttpCacheability.NoCache);
  Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
  Response.Cache.SetNoStore(); 
}

ページがブラウザにキャッシュされないようにします。

于 2013-06-19T08:54:20.100 に答える