2010-05-08 68 views
3

這應該工作,如果多個窗口打開。如果用戶關閉瀏覽器,是否有任何技術可以終止用戶登錄會話?

我的應用程序是在J2EE中。

我已經嘗試了一些像window.unloadn一樣的javascript,但這種解決方案並不穩固。

+1

會話cookie(即在會話結束時即瀏覽器關閉時會過期的cookie)? – stakx 2010-05-08 15:16:00

+0

@stakx這只是刪除會話cookie。它不關心數據庫中的會話數據(我猜這是OP想要的) – aviraldg 2010-05-08 15:44:09

回答

5

如果你的意思是在服務器端,最好的方法是實現心跳。如果這個webapp的窗口都沒有打開,沒有發送心跳,並且一段時間後服務器會知道應用程序已斷開連接。

如果你的意思是在客戶端,沒有100%可靠的方法,因爲瀏覽器可能因外部原因(殺死/崩潰/重啓)而死亡,但是超時的cookie會以心跳的形式定期更新時尚可能會起作用

4

HTTP是無狀態的,這意味着當瀏覽器關閉時無法分辨。

您嘗試使用window.onunload並不總是有效,因爲在執行事件處理程序之前瀏覽器可能會退出。

用於查明用戶是否已關閉瀏覽器(或最佳猜測)的技術是使用超時。會話將自動超時(這是可配置的) - 在asp.net中默認爲20分鐘。如果沒有活動,超時會開始。

相關問題