私が使用しているアプリケーションは、jqueryを使用してセッションタイムアウトプロンプトを実装しています。カウントするタイマーがあり、事前定義されたX分後にユーザーアクティビティがない場合は、ユーザープロンプトが表示されます
(セッションはまもなく終了します...続行またはログアウト)。
ここにあるアプローチを使用します-http://www.codeproject.com/Articles/227382/Alert-Session-Time-out-in-ASP-Net。
ただし、ユーザーが新しいタブを開いた場合、これは機能しません。
1)ユーザーがログインすると、タイマーはユーザーの非アクティブのカウントを開始します。
2)ユーザーが新しいウィンドウで開くリンクをクリックします(たとえば、この場合、実行中の長いレポートです)。2番目のタブがアクティブで、いくつかの応答があります(セッションを終了しないクロスバック/ポストバック)。
3)2番目のブラウザタブがアクティブです。セッションを終了しないアクティビティがいくつかあります。
4)ただし、最初のブラウザタブは非アクティブであり、カウンタはセッションを閉じる必要があると「考えています」。適切なメッセージが表示され、ユーザーがログアウトします。
これは私たちが望んでいることではありません。したがって、特定のアプローチはセッションタイムアウトの修正にすぎませんが、ユーザーが別のタブでアクティブになっている場合、アプリケーションはとにかくユーザーをログアウトします。それは望ましいことではありません。レポートページがあります。新しいタブ/ウィンドウでレポートを開くように機能します。そして、それはかなり長く実行される可能性があります。レポートセクションはいくつかのコールバックを処理するため、セッションはこのタブで終了しません。ただし、2番目のタブで終了します。
編集: 私は次の解決策を持っています:「JavascriptCookieを保存し、それをチェックして、セッションが別のタブで拡張されているかどうかを確認しますか?」私はまだこれを理解しようとしています。