2017-07-05 51 views
1

私は、スプリングとストラットを使用してエンタープライズアプリケーションを開発しています。しかし、私はTabのクローズで問題を起こしている。ブラウザタブを閉じるときにユーザログアウトを強制する方法、または別のタブで同じページを開く方法。閉じるタブを閉じると、ユーザーを強制的にログアウトする方法

私はonbeforeunloadを試してみましたが、アプリケーションがモバイルブラウザで動作しているときに問題が発生しています。私も以下のサンプルを見てきましたが、誰も明確な説明をしていません。

How to kill session when user closed the browser without logout

How to Detect Browser Window /Tab Close Event?

JavaScriptを使用したり、サーバからこの問題を達成するための任意の解決策はありますか? ありがとう

+0

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunloadをチェックすることができます – brk

+0

'HttpServletRequest.logout()'メソッドを使用して、現在のユーザをログアウトすることができます。通常、これは 'SecurityContextHolder'がクリアされ、' HttpSession'が無効化されることを意味します。 –

+0

@JaySmithはい、ただし、タブブラウザーを閉じると現在のユーザーをログアウトする方法は? –

答えて

0

ページonloadでajaxリクエストを開始し、サーバーから追跡セッションID /シリアルを取得することができます。
すべてのリクエスト操作に、上記のajax呼び出しを使用して、ページに与えた追跡セッションを強制的に含めるようにします。

ユーザーが新しいタブを開くと、ajaxの読み込みが再び開始されます。サーバーのライブセッションのトラックを関連ユーザーと照合する限り、そのユーザーを他の場所などにリダイレクトすることができます。

私はあなたが経験するのと同じことをonbeforeunloadに頼ることはできません。

他にも述べたように、httpはステートレスです。クッキーとリクエストは、ユーザーの状態を確認できるものです。

サーバーでは、セッションのタイムアウトによってセッションクッキーが無効になる可能性があります(ユーザーがコーヒーを飲むと仮定した場合、ページ/タブを閉じるなど)。
し、上記溶液中で説明したように、彼/彼女は新しいタブを開いた場合、新しいAJAX呼び出しは、新しいログインを実行するために彼/彼女をブロックする可能性がありますか、など

私はあなたの代わりに、この別の解決策を見つけることが示唆あなたが得ようとしているアプローチ。ページの状態を最後に開いたページと同期させる方がはるかに簡単であり、より意味があります。ユーザーが5つの同じページを開き、それらをすべて互いに同期させる(最も簡単な解決策:更新されたときに他のものを更新する)

0

あなたはjavascript関数を持っていてbodyの "onunload"バックエンドコードを呼び出してユーザーセッションを無効にします。

関連する問題