2016-07-19 1 views
0

ブラウザが閉じられているとき、またはログアウトボタンをクリックしてアプリケーションをログアウトする。しかし、クロムやFirefoxで「中止した場所を続ける」がオンになっていると、セッションはクリアされません。ブラウザはセッション値を保存して設定を適用します。私のアプリケーションには機密情報が含まれているので、クリアする必要があります。タブを閉じるとログアウトしたくありません。誰もこれを行う方法を提案することはできますか?私はすでに、タブが5分間以上非アクティブのままであるときのタイマーログアウトを実装しました。また、ブラウザが閉じられるとログアウトします。 "ここで問題となるのは、ブラウザでログアウトしないブラウザで「続行した場所を続ける」設定がオンになっているときです。」です。私はちょうど私の最後のポイントに基づいて提案をしたい。クロムで「中断した場所から続ける」設定が有効になっている場合、ウィンドウ上でセッションをクリアする

+0

'window.onbeforeunload = function(event){/ *ここでセッションをクリアするためにajaxを実行する* /};'本当にjavascriptを使用しているかどうかわからないが、これをコメントとして投稿して申し訳ありません。あなたがしていない場合は、クライアント側のスクリプトの助けなしには不可能です。 – Manikiran

+0

'セッション_destroy( '')' ..? –

+0

[ブラウザが再読み込み/終了する前にJavascript関数を実行する/ページを終了する]の可能な複製がありますか?](http://stackoverflow.com/questions/14746851/execute-javascript-function-before-browser-reloads-closes-browser-exits- page) – Manikiran

答えて

0

他のタブがアクティブな間に簡単なタブクローズで自動ログアウトしたくない場合は、直接の方法はありません。すべてのクライアントサイドスクリプトはタブ内でしかコントロールできないため、自分自身を解放したり、ブラウザウィンドウ自体を制御することはできません。

周りの代わりにログオフユーザー、彼は積極的な任意のタブを持っていなかったとき、のは言わせ、30秒になり、他の方法:

1)はすべてのページにロードされているスクリプトを追加しますこのクライアントがまだアクティブであることをサーバーに定期的にajaxリクエストします。

2)これらの要求をリッスンし、前回のセッションで受信したサーバーサイドスクリプトを作成します。

3)最後に、session_start()の後のどこかにスクリプトが含まれていて、最後のリフレッシュ時間をチェックし、最後のリフレッシュ要求からあまりにも多くの時間が経過した場合にセッションをクリアする可能性があります。その期間...または接続の問題は、完璧にすることはできません)。

+0

ダビッドの提案をありがとうが、私はすでにあなたが言ったことを適用した。ここでは、ブラウザの設定でログアウトが間違っています。通常、ブラウザを閉じると、セッション値がクリアされます。キャッシュの代わりにセッションに行く理由ページを読み込むためにchrome saveセッションでこの設定を「中断したところから続ける」。私はちょうどセッションの値を保存することからそれを停止したい、または他の提案が歓迎されています。 – Sam

+0

この設定をオフにする唯一の方法は、ブラウザの設定を使用することです。スクリプトからは実行できません。 – David162795

関連する問題