ユーザーがタブ(アカウントがログインしているタブ)を閉じた場合、ユーザーを自動的にログに記録するにはどうすればよいですか。Cookie を使用すれば可能かもしれませんが、 Sessions を介してこれをどのように達成するのでしょうか?
2 に答える
ページが正常に閉じることに依存しているため、ウィンドウが閉じたときにユーザーがログアウトされることを保証することはできません。ブラウザがハード クラッシュすると、Javascript を実行できなくなります。
AJAX に Javascript コードを実装して、ウィンドウのアンロード時にログアウト ページを呼び出すことをお勧めします。
それ以外の場合は、セッション タイムアウト制限を下げる必要があります。
どのくらい厳しくしたいかによります。
「インスタント」ログアウトが必要な場合、最も簡単な方法は、AJAX を使用して、たとえば 30 秒から 1 分ごとにサーバーに ping を実行して、セッションを維持することです。これにより、多くのオーバーヘッドが発生し、サーバーの負荷が増加しますが、誰かを即座に失う唯一の確実な方法です.
同じ原則がより長期間有効です。30分としましょう。このトピックで述べたことを実行して30 分後に誰かをログアウトするか、AJAX を再度使用して 10 ~ 15 分ごとにサーバーに pingを実行し、ユーザーがページにいる間はセッションを維持します。
おそらくそれ以上のものはありません。
@thatidiotguyが言ったように、ウィンドウのアンロードイベントを実装してユーザーの終了を処理できますが、非常に注意する必要があります-ユーザーが2つのブラウザーウィンドウを開いている場合はどうなりますか? 彼が同時に 2 つのページを表示している場合、彼をログアウトしたくありません。