私は小さな単純な問題を抱えていますが、以下は問題をさらに説明するのに非常に長くなります。
フォーム認証を使用する MVC 4 アプリケーションがあります。ブラウザのセッション Cookie を使用してセットアップし、サイトを好きなだけ使用できるようにしていますが、ブラウザを閉じるとすぐに、本質的にログアウトされます。
ここで、アイドル タイマーの形で追加のセキュリティ レイヤーを追加しました。たとえば、5 分間アイドル状態の場合、サーバーに ajax リクエストが送信されてフォーム認証トークンが削除され、期限切れのセッションが部分的に返されます。このセッションの期限切れビューをモーダル ダイアログとして表示します。
このダイアログには、ユーザー名を示すラベルと、パスワードを再入力できるパスワード入力フィールドがあります。
これが意味することは、誰かが別のセッションを開いた場合、誰もログインしていないため、ログイン画面に移動するだけであり、現在の画面を更新しただけでも同じことが起こるということです。ただし、ユーザーがタイムアウト画面でパスワードを入力すると、ダイアログはサーバーに ajax リクエストを送信して再度ログインし、ダイアログを削除することも意味します。
これはすべて(ほとんど)完全に機能し、以前と同じ画面に表示されます。また、たとえば大きなフォームに記入している途中の場合など、以前と同じようにすべてが記入されます。
問題は、ブラウザで2つの異なるタブを開いている場合、最初のタブがタイムアウトし、期待どおりに名前とパスワード入力ボックスを含むタイムアウト画面が表示されますが、時間のリクエストを行うと2番目のブラウザタブが表示されます-最初のタイムアウト要求でログアウトされたため、誰もログインしていないためです。どうすればこの問題を回避できますか? 簡単な解決策はありますか?または、私がこれをどのように行っているかについて、より良い設計がありますか?