2016-12-24 13 views
-1

私は、ユーザーのセッションを処理するためのルールの下に定義されています。春にセッションタイムアウトの前に条件を置くことはできますか?

  • ユーザーがログインすると、HttpSessionListenerのsessioncreate()が呼び出され、ユーザーステータスがデータベースのオンラインとして設定されます。 HttpSessionListenerの
  • ユーザーがsessiondestroyを(ログアウト)ユーザーがブラウザ/タブを閉じると、セッションを破壊するために、ブラウザのアンロード/ some_otherイベントにAJAX呼び出しを行う
  • ...呼び出され、データベースにオフラインとしてユーザステータスを設定します。
  • 我々は完全にブラウザのイベントに依存することはできませんので、また、サーバー側でSESSION_TIMEOUTを使用しています。セッションタイムアウトイベントでは、まずサーバーからクライアントへの検証呼び出しを行い、依頼者がまだ利用可能かどうかを確認します。クライアントから確認応答を受け取った場合、ブラウザタブがまだ開いていることを意味します。だから私たちはセッションを破壊しません。ここで最後のルールで

、どのセッションをインターセプトするには、春のメカニズムを破壊しますか? クライアントから承認を受け取った場合、セッション破棄をスキップする方法はありますか?

おかげで、

+0

だけで明確にするには、あなたがいる限り、ブラウザが開いていると、アクティブなセッションを維持したいですか?ユーザーが画面上で何もタスクを実行していない場合でも? –

+0

はいセッションがアクティブである必要があります。ユーザーがランダムに選択されるという要件があります。それまで彼は待っています。 –

+0

あなたはすでに、すぐにAJAXリクエストが=「ログアウト」アクションのようないくつかのパラメータを指定して来て、より安全側としてあなたがで最大非アクティブ時間を設定することができますように、セッションを無効化することで、サーバー側でログアウトを実行するには、ブラウザのアンロードイベントでその罰金をいくつかのイベントを送信すると設定session.setMaxInactiveInterval(15 * 60); // inseconds –

答えて

0

代わりのセッションタイムアウトのイベントをキャッチした後、サーバーからセッションを再活性化は、私はより良い方法を提案してみましょう。

ブラウザ限りアクティブなセッションを維持したいので、ユーザーがページからサーバーをAjaxのPINGを送り返し、サイトで(相互作用)にアクセスしていない場合でも、開いています。これは、両方の問題を解決するhttps://stackoverflow.com/a/3877867/6352160

- - 閉じるセッションを自動的にユーザーがブラウザのタブを閉じたとき

この答えはその一例です。タブが開いている間は、セッションをアクティブに保ちます。セッション変数をカウンタとして保持し、不定期に長く実行されているセッションを避けるために、セッションを一定の制限時間だけ開くことをお勧めします。

+0

ありがとうございますが、ブラウザからサーバーにajax pingを送信したくありません。それはウェブサイトを使用しているカストマーのlacsの帯域幅の多くを消費します。代わりに、私は彼がまだウェブサイト上にあるかどうかを確認することをクライアントから確認することを選択しました。 –

+0

ここで私の答えの一部を見つけることができます。誰かがセッションの破壊を防ぐためにそれを拡張できますか? –

+0

リンクを忘れた:http://stackoverflow.com/questions/3943368/invoke-method-just-before-session-expires –

関連する問題