2011-07-20 109 views
4

我有一個網站,其中包含針對不同類型用戶的多個規則集。 其中一個規則(權限)取決於會話到期。基於Django密鑰的會話過期

例如,當瀏覽器關閉時,必須刷新未認證用戶的會話,但認證用戶的會話應持續存在一段時間。

此外,對於經過身份驗證的用戶,會話中的某些密鑰可能在瀏覽器關閉時被刪除,但其他應該保持活動狀態。

如何在Django中實現此基於密鑰的會話過期?

+0

我看了一遍文檔。在一段時間之後,或者在瀏覽器關閉之後,很容易讓某個特定的會話過期,但我無法看到每個關鍵點都能做到的方式。希望別人可以給你一個答案,但是你可能會被迫創建自己的實現'SessionBase'的按鍵到期。 – Gareth

回答

0

您可以通過request.session上的set_expiry方法來做到這一點。該方法採用秒數的整數使會話過期,datetimetimedelta會話應該過期,整數0表示會話應在瀏覽器關閉時間過期或None表示會話應該回退到默認的超時策略。

您應該能夠編寫一段中間件,用於評估會話過期的標準,然後在處理請求之前在會話上調用set_expiry