簡體   English   中英

在瀏覽器關閉時結束 Session?

[英]Ending Session on Browser close?

我想在用戶關閉 web 瀏覽器后立即用我的網站刷新用戶的 session。 我該如何實現呢?

這並不容易,因為 http 是無狀態的。 因此,當瀏覽器關閉時,您沒有打開的連接。 沒有辦法保證工作。 可能會斷開連接,或關閉 go 電源,這將使任何“onClose”事件都不可靠。

您可以在一定量的不活動后超時會話。 但是,不能保證用戶不只是去吃午飯,並且在返回時想要一個打開的 session。

如果您擔心指示人們離線,您可以在 ajax 中進行一些輪詢,以保持會話處於活動狀態並銷毀超過輪詢間隔未使用的會話。 但是,如果您只是擔心資源,我猜這弊大於利。

onbeforeunload()事件中調用 ajax 並調用:

Session.Abandon();

當用戶關閉 window 或離開頁面時,您沒有在服務器端觸發任何事件,您可以使用會話超時來檢查它,然后確保 session 不會死於空閑用戶,這可能是在浴室,或制作咖啡,用 AJAX 左右驗證它。

MakeDummyRequest(); // with a simple http request, you can keep your session alive.

正如其他人指出的那樣,您最好的選擇可能是進行 Ajax 調用,這將使 session 保持活動狀態。 如果您保持精簡,此調用可能會以較快的間隔發生。 然后你可以使用某種 session 超時算法。

話雖如此,有幾點需要注意。 您可能希望在協議中構建一種方法來強制用戶注銷應用程序。 想象一下,一個用戶登錄到您的應用程序,他周末回家時沒有關閉他的計算機。

在周末,您進行了部署,這將使所有 ajax 通信無效,因為您修改了協議或其他內容。 除非您強迫他退出,否則他將繼續登錄,並且在他周一早上來時可能會出錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM