簡體   English   中英

瀏覽器關閉時殺死會話

[英]Killing session when browser is closing

我需要在用戶關閉瀏覽器或重定向到其他頁面時終止會話。 我可以看到實現此功能的以下選項:

  1. 不使用會話登錄。 這不是我的情況,因為我必須改變很多,我還使用會話來獲取其他一些數據。
  2. 我可以使用這樣的東西:
window.onunload = window.onbeforeunload = (function () {
   ...
  })

從此代碼調用清除會話並執行注銷的操作。 聽起來很討厭,但同樣重要的是 - 這個JavaScript代碼只適用於IE。

  1. 我可以創建一些討厭的代碼,使用一些虛擬調用,讓我們說每分鍾,只是說服務器用戶仍然活着。 但它真的很討厭。 它會在服務器上使用無用的負載,大量無用的調用,如果某些調用丟失(由於連接問題或其他原因),用戶將注銷。

還有其他選擇嗎?

你已離開#4:不要做任何事情,在一段合理的時間后(例如,20分鍾)讓會議超時; 如果他們在離開20分鍾后嘗試在該頁面上做某事,只需顯示一個頁面告訴他們他們的會話已經過期並再次登錄。 這通常是最簡單的選擇。

如果你不想這樣做,#3真的是你唯一可行的選擇,但一次/分鍾可能是矯枉過正。 將會話超時設置為20分鍾,記住用戶何時做了什么,如果他們閑置(比方說)15分鍾,請代表他們進行主動呼叫。 但即使這樣,我也會限制我做多少,幾個小時后你可能只想將它們重定向到登錄頁面。

我認為這個答案是正確的方法:

在javascript中,如何從另一個瀏覽器窗口中唯一標識同一個基於cookied的sessionId的瀏覽器窗口

設置一個唯一的窗口ID:

window.windowIdClient = "{978d-478ahjff-3849-dfkd-38395434}"; //or another randomly generated id.

將windowId與ip-address和session-id一起存儲在數據庫中。 如果這三個不匹配,則用戶退出。

另外,如果沒有想到TJ Crowder的選擇,我會自己使用它。

暫無
暫無

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

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