【发布时间】:2011-02-02 02:31:04
【问题描述】:
我正在开发一个网站,该网站要求我们在 N 分钟不活动后将用户注销。有没有使用 Django 的最佳实践?
【问题讨论】:
标签: python django authentication
我正在开发一个网站,该网站要求我们在 N 分钟不活动后将用户注销。有没有使用 Django 的最佳实践?
【问题讨论】:
标签: python django authentication
尝试将 settings.SESSION_COOKIE_AGE 设置为 N * 60 秒。
http://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-age
【讨论】:
查看session middleware 及其设置。特别是这两个:
SESSION_COOKIE_AGE
默认值:1209600(2 周,以秒为单位)
会话 cookie 的年龄,在 秒。
SESSION_SAVE_EVERY_REQUEST
默认值:假
是否保存会话数据 每一个请求。如果这是 False (默认),那么会话数据将 仅在已修改时才保存 -- 也就是说,如果它的任何字典值已被分配或删除。
设置较低的SESSION_COOKIE_AGE 并打开SESSION_SAVE_EVERY_REQUEST 应该可以创建“滑动”到期。
【讨论】:
在 django 会话中间件中设置会话 cookie 年龄只是在传回浏览器的 set-cookie 标头中设置过期时间。只有浏览器遵守强制“注销”的到期时间。
根据您需要空闲注销的原因,您可能认为浏览器对到期时间的合规性不够好。在这种情况下,您需要扩展会话中间件。
例如,您可以在会话引擎中存储到期时间,并根据请求进行更新。根据您网站的流量性质,您可能希望在 X 秒内只回写一次会话对象,以避免过多的数据库写入。
【讨论】:
Set-Cookie=csrftoken=... sessionid=365ede0dd7038cc70796f9f724bc21b6; httponly; Path=/ 它没有过期时间,所以必须在服务器端强制执行过期。