1
A
回答
2
正如@ TimmyO'Mahony所提到的,您可以使用user_logged_out
信號來處理由於註銷而導致的會話結束。
由於不活動,您可以使用中間件來處理會話過期。中間件可以看起來像:
import time
from django.contrib.auth import logout
SESSION_TIMEOUT = 5400 # 90 minutes
class HandleSessionExpiryMiddleware(object):
def process_request(self, request):
last_activity = request.session.get('last_activity')
now = time.time()
idle = now - last_activity if last_activity else 0
timeout = SESSION_TIMEOUT
if idle > timeout:
run_on_expiry()
logout(session)
else:
request.session['last_activity'] = now
idle = 0
def run_on_expiry(self):
# Custom code
假設上面的代碼是在一個文件sessions/middleware.py
,你需要這個中間件在settings.py
像添加到MIDDLEWARE_CLASSES
:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'sessions.middleware.HandleSessionExpiryMiddleware',
...
)
希望這有助於!
相關問題
- 1. 在android中跟蹤會話長度
- 2. 會話如何跟蹤多個用戶
- 3. 如何在AWS Mobile Analytics中跟蹤會話長度?
- 4. 如何在django的我自己的中間件中跟蹤用戶會話?
- 5. 跟蹤Cookie而非JS的跟蹤器用戶會話Like Google
- 6. 會話跟蹤
- 7. 使用backbone.js跟蹤用戶會話
- 8. 使用Google Analytics跟蹤用戶會話
- 9. 使用Spring跟蹤用戶登錄和註銷會話跟蹤
- 10. 跟蹤Httpsession用戶會話超時
- 11. 活動用戶跟蹤,PHP會話
- 12. 使用有狀態會話Bean來跟蹤用戶的會話
- 13. 如何在struts 2中跟蹤用戶會話2
- 14. 會話跟蹤Servlet
- 15. SIP會話跟蹤
- 16. Java會話跟蹤
- 17. 使用會話跟蹤
- 18. Django跟蹤匿名用戶
- 19. jquery聊天如何跟蹤用戶會話
- 20. J2ee的會話跟蹤
- 21. 跟蹤的Oracle會話
- 22. 如何跟蹤會話創建
- 23. Spring Security Form Authentication:如何跟蹤會話?
- 24. 如何在django視圖中獲得會話的長度
- 25. 在ASP中跟蹤和列出用戶的所有會話SessionStateProvider
- 26. 跟蹤SQL Server中緩慢的用戶登錄會話
- 27. 跟蹤用戶長時間的位置
- 28. 在Android應用程序中跟蹤用戶會話
- 29. Hibernate會話跟蹤對象
- 30. 如何使用谷歌分析跟蹤鈦中的會話?
最好的辦法是每隔X分鐘運行一次芹菜任務,檢查會話數據庫以查看哪些會話已過期。你可以使用['user_logged_out'](https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.django.contrib.auth.signals.user_logged_out)信號,但這很明顯僅當用戶通過註銷手動過期時才能工作,但對於因不活動而過期的會話不起作用 – 2015-02-06 19:46:22
@ TimmyO'Mahony謝謝!好主意 – user2662692 2015-02-06 20:21:40