0

Javascriptに代わるものはありonUnloadますか?サーブレットでJSPJakartaStrutsフレームワークを使用しています。

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

4

4 に答える 4

5

一般的に言えば、訪問者がまだあなたのページを「使用」している (または見ている) かどうかを決定的に判断することは不可能です。ブラウザがページをダウンロードすると、サーバーとはまったく接触しなくなるため、ページが数秒または数年開いたままになり、サーバーはそれを認識できなくなります.

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

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

これに対する標準的な回避策は (私たち全員がひどいことだとすぐに認めます)、訪問者のセッションをタイムアウトにすることです。リスクの高い銀行の Web サイトでも、コンピューターから 4 分間離れて戻ってきた場合は引き続きアクセスできますが、5 分間離れるとロックアウトされます。

この設定では、確かに多くの誤検知が見つかります。つまり、訪問者がページを操作せずにまだページを使用しているため、タイムアウトが発生して不便な場合です。また、偽陰性 (実際の訪問者が立ち去り、悪意のあるユーザーがタイムアウト期間内に引き継ぐ場合) も許容します。

最近確認されたこのスキームへの唯一の主要な追加は、タイムアウト期間後にユーザーを目に見えてログアウトさせる JavaScript の悪用です。繰り返しになりますが、これは銀行の Web サイトで見られます。ページを長時間開いたままにしておくと、戻ってきたときにログイン画面しか表示されません。(もちろん、これも JavaScript に依存するため、まだ誤りがあります。)

残念ながら、HTTP はステートレス プロトコルであるため、ブラウザーで何が起こっているかを確実に知ることはできません (特に JavaScript がオフの場合)。

于 2009-08-29T13:57:49.150 に答える
0

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

于 2009-08-29T13:43:54.827 に答える
0

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

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

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

于 2009-08-29T14:02:44.947 に答える