這應該工作,如果多個窗口打開。如果用戶關閉瀏覽器,是否有任何技術可以終止用戶登錄會話?
我的應用程序是在J2EE中。
我已經嘗試了一些像window.unloadn一樣的javascript,但這種解決方案並不穩固。
這應該工作,如果多個窗口打開。如果用戶關閉瀏覽器,是否有任何技術可以終止用戶登錄會話?
我的應用程序是在J2EE中。
我已經嘗試了一些像window.unloadn一樣的javascript,但這種解決方案並不穩固。
如果你的意思是在服務器端,最好的方法是實現心跳。如果這個webapp的窗口都沒有打開,沒有發送心跳,並且一段時間後服務器會知道應用程序已斷開連接。
如果你的意思是在客戶端,沒有100%可靠的方法,因爲瀏覽器可能因外部原因(殺死/崩潰/重啓)而死亡,但是超時的cookie會以心跳的形式定期更新時尚可能會起作用
HTTP是無狀態的,這意味着當瀏覽器關閉時無法分辨。
您嘗試使用window.onunload
並不總是有效,因爲在執行事件處理程序之前瀏覽器可能會退出。
用於查明用戶是否已關閉瀏覽器(或最佳猜測)的技術是使用超時。會話將自動超時(這是可配置的) - 在asp.net中默認爲20分鐘。如果沒有活動,超時會開始。
會話cookie(即在會話結束時即瀏覽器關閉時會過期的cookie)? – stakx 2010-05-08 15:16:00
@stakx這只是刪除會話cookie。它不關心數據庫中的會話數據(我猜這是OP想要的) – aviraldg 2010-05-08 15:44:09