在django中,request.session.set_expiry是如何使用idle后注销用户的?

Posted

技术标签:

【中文标题】在django中,request.session.set_expiry是如何使用idle后注销用户的?【英文标题】:In django, how is request.session.set_expiry used to log out users after idle? 【发布时间】:2011-06-04 08:03:37 【问题描述】:

我想在一段时间不活动后注销用户。这个问题 (Logging users out of a Django site after N minutes of inactivity) 的答案看起来很合理。

但我想了解 request.session.set_expiry 与 SESSION_COOKIE_AGE 的区别。无论活动如何,前者似乎都会在固定时间后将用户注销。如果 SESSION_SAVE_EVERY_REQUEST 为 False,这不也是 SESSION_COOKIE_AGE 所做的吗?

【问题讨论】:

【参考方案1】:

据我所知,request.session.set_expiry 只是覆盖了该特定会话的SESSION_COOKIE_AGE 设置。使用SESSION_SAVE_EVERY_REQUEST = False(默认),不会有功能上的差异。

在这两种情况下,会话活动都基于上次修改会话的时间(除非 SESSION_SAVE_EVERY_REQUESTTrue,在这种情况下,它会保存在每个请求中,因此会在每个请求中有效地修改)

例如,您可能希望应用程序的某个部分中的用户具有更长的会话到期时间,因此您可以在与该应用程序相关的视图中使用带有自定义值的 request.session.set_expiry,然后使用 @ 重置它987654327@ 当他们离开该特定部分时。

【讨论】:

以上是关于在django中,request.session.set_expiry是如何使用idle后注销用户的?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 Django HTML 模板中的 request.session 变量?

django 有关session内部函数做法

django cookies与session

Django之session与分页

Django - ajax 请求中的空会话数据

在 Django 中,如何清除 sessionkey?