我希望在一段时间不活动后将用户注销。这个问题(Logging users out of a Django site after N minutes of inactivity)有一个合理的答案。
但我想了解request.session.set_expiry与SESSION_COOKIE_AGE的区别。无论活动如何,前者似乎都会在固定时间段后将用户注销。如果SESSION_SAVE_EVERY_REQUEST为假,这也不是SESSION_COOKIE_AGE的作用吗?
答案 0 :(得分:2)
据我所知,request.session.set_expiry
只是覆盖了该特定会话的SESSION_COOKIE_AGE
设置。使用SESSION_SAVE_EVERY_REQUEST = False
(默认值),将没有功能差异。
在这两种情况下,会话活动都取决于上次修改会话的时间(除非SESSION_SAVE_EVERY_REQUEST
为True
,在这种情况下,它会保存在每个请求中,因此每次请求都会对其进行有效修改)
一个示例是您可能希望应用程序的某个部分中的用户具有更长的会话过期时间,因此您可以在与该应用程序相关的视图中使用request.session.set_expiry
自定义值,然后重置它当他们离开那个特定部分时,request.session.set_expiry(SESSION_COOKIE_AGE)
。