2014-10-01 28 views
0

我使用會話來存儲對象ID和它的描述,這個實例應該被阻止給所有其他用戶,當它在某人的會話中使用時,我想釋放用戶對象一旦他關閉了瀏覽器,現在我知道有一個配置在瀏覽器關閉時過期會話,我只是徘徊,如果有任何入口點,我可以添加一些自定義代碼會話過期的運行方法Django

我想要實現的有點像

def OnSessionExpire(???): 
    #release my objects 

我四處搜索,但沒有找到答案,有人可以在這裏幫忙嗎?我正在使用後端會話模式

謝謝!

回答

1

當瀏覽器關閉時,Django根本沒有做任何事情。 Django甚至不知道 - 它怎麼可能:Django唯一知道你在瀏覽器中做什麼的時候,是當你向服務器發出請求時,關閉瀏覽器與提出請求相反。

關閉瀏覽器的會話過期是會話cookie的屬性,而不是Django所做的任何事情。這只是表示cookie設置了一個標誌,告訴瀏覽器在關閉時不要保留它。實際會話數據保留在Django的會話存儲中,並且會一直顯示,直到您明確清除它,但由於Cookie已被刪除而無法訪問。

所以,結果就是沒有辦法明確告訴會話何時結束。你可以做的唯一事情就是在session打開的時候發送定期的keepalive信號 - 例如通過Ajax - 如果你有一段時間沒有看到任何信號就採取行動。