3

ユーザーがタブ(アカウントがログインしているタブ)を閉じた場合、ユーザーを自動的にログに記録するにはどうすればよいですか。Cookie を使用すれば可能かもしれませんが、 Sessions を介してこれをどのように達成するのでしょうか?

4

2 に答える 2

8

ページが正常に閉じることに依存しているため、ウィンドウが閉じたときにユーザーがログアウトされることを保証することはできません。ブラウザがハード クラッシュすると、Javascript を実行できなくなります。

AJAX に Javascript コードを実装して、ウィンドウのアンロード時にログアウト ページを呼び出すことをお勧めします。

それ以外の場合は、セッション タイムアウト制限を下げる必要があります。

于 2013-08-01T14:41:57.673 に答える
5

どのくらい厳しくしたいかによります。

「インスタント」ログアウトが必要な場合、最も簡単な方法は、AJAX を使用して、たとえば 30 秒から 1 分ごとにサーバーに ping を実行して、セッションを維持することです。これにより、多くのオーバーヘッドが発生し、サーバーの負荷が増加しますが、誰かを即座に失う唯一の確実な方法です.

同じ原則がより長期間有効です。30分としましょう。このトピックで述べたことを実行して30 分後に誰かをログアウトするか、AJAX を再度使用して 10 ~ 15 分ごとにサーバーに pingを実行し、ユーザーがページにいる間はセッションを維持します。

おそらくそれ以上のものはありません。

@thatidiotguyが言ったように、ウィンドウのアンロードイベントを実装してユーザーの終了を処理できますが、非常に注意する必要があります-ユーザーが2つのブラウザーウィンドウを開いている場合はどうなりますか? 彼が同時に 2 つのページを表示している場合、彼をログアウトしたくありません。

于 2013-08-01T14:47:58.337 に答える