2016-10-28 28 views

回答

1

從這個問題和評論,似乎你想「關閉」會議,當用戶退出您的網站沒有任何援助JS。答案取決於你如何定義「關閉」。

問題的根源在於HTTP是無狀態的。進入服務器的每個請求都是完全獨立的請求,與任何其他請求沒有任何關係,這意味着不能有任何狀態。由於狀態非常有用,我們通過使用會話破解HTTP來添加狀態。這個想法是,瀏覽器發送一些標識符到服務器上存儲的某個狀態,這允許服務器檢索該狀態,從而爲請求提供一些上下文。關鍵在於瀏覽器正在發送該數據。換句話說,如果瀏覽器在某些時候會停止發送請求(例如用戶關閉標籤),服務器將永遠不會知道這一點。因此,如果將「關閉」會話定義爲從服務器刪除會話,那麼沒有JS的幫助就不可能實現。

但是,如果您嘗試實現的所有操作都是在用戶退出網站時將其註銷,則可以使用SESSION_EXPIRE_AT_BROWSER_CLOSE設置在Django中完成部分操作。 Here是另外的文檔。這裏的想法是,當Django將會話cookie發送回瀏覽器時,它會指示會話cookie在瀏覽器關閉時應該過期。在這種情況下,當瀏覽器關閉時,瀏覽器本身會使會話無效,因此用戶將被迫在下次訪問時創建新會話。這是部分解決方案,因爲會話仍將存儲在服務器上,我相信只有當瀏覽器完全關閉時(我不認爲關閉標籤有效但不確定)。爲了緩解服務器累積舊會話的問題,Django提供了一個管理命令clearsessions,您應該定期運行該命令。

相關問題