2009-08-29 120 views
0

JavaScriptの代替手段がありますonUnload?私はJSPジャカルタストラットフレームワークを使用してサーブレットを使用します。JavaScript onUnloadの代替

ではなく、誰もが[ログアウト]ボタンをクリックするので、ウィンドウが閉じられていることを知っておく必要があります。
アプリケーションでどのように処理しますか?

答えて

5

一般的に言えば、訪問者があなたのページを「使用している」(または見ている)のかどうかを最終的に判断することは不可能です。ブラウザがページをダウンロードすると、サーバーとの接触がなくなり、ページは数秒間または数年間開いたままになり、サーバーはわかりません。

通常はがページがアンロードされたときに起動するため、unloadイベントは確かに役立ちます。しかし、それはまったく信頼できるものではありません。それは発射されない多くの状況があります。そして、あなたのサーバーは発射してもそれが気付かれない場所がたくさんあります。

たとえば、ブラウザ(またはオペレーティングシステム)がクラッシュしたり、電源が切れたりする可能性があります。 Wi-Fiを使用している訪問者は、あなたのサイトを使っている途中で切断されたり、iPhoneをトンネルに持ち込んだりする可能性があります。

私たちは誰もが簡単に認めているように、このための標準的な回避策は、訪問者のセッションがタイムアウトするようにすることです。ハイステークスの銀行のウェブサイトであっても、あなたが4分間コンピュータから離れて戻ってきてもアクセス権があることが分かります。しかし、5分間歩けばロックアウトされます。

この設定では、偽陽性が多く見受けられます。訪問者があなたのページをまだ使用していないため、タイムアウトが発生することがあります。また、実際の訪問者が逃げ出し、悪意のあるユーザーがタイムアウト期間内に引き継ぐケースもあります。

私たちが最近見たこのスキームの主な変更点は、JavaScriptを利用してタイムアウト時間後にユーザーを目に見える形でログアウトさせることだけです。ここでも、銀行のウェブサイトでこれを見ることができます。ページをあまりに長く開いたままにしておくと、ログイン画面が表示されます。 (もちろん、これもJavaScriptに依存しているので、やはり誤りです。)

残念ながら、HTTPはステートレスなプロトコルなので、ブラウザで何が起こっているのかはわかりませんオフ)ので、安価な回避策を使用することができます。

+2

私はそれが_impossible_、非常に難しいとは言いません。常にFlash + Webcam +動き検出+顔検出があります。 –

0

Operaは、あなたが疑うようにonUnloadを実行しないことに注意してください。また、ユーザーがウィンドウを閉じるかどうかを確認するためにJavaScriptに頼るべきではありません。

+0

はい、しかし、私はonunloadイベントの代わりに探しています... – wokena

0

私は自動的にログアウトを処理するためにサーブレットセッションタイムアウトに依存します。セッションがタイムアウトしたときのためにハンドラを登録して、必要な資格情報のクリーンアップをカバーすることができます。良い例がここに与えられます。

http://www.xyzws.com/Servletfaq/when-do-i-use-httpsessionlistener/7

ユーザーは常に、彼らはあなたのサイトを使用して終了したことを確認することをクライアント側からの保証はありません。