【发布时间】:2012-12-18 06:10:27
【问题描述】:
Django 文档指出:
可以控制会话框架是否使用浏览器长度 会话与持久会话 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置。
如果 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 True,Django 将使用 浏览器长度的cookies——一旦用户过期,cookies 关闭他或她的浏览器。如果您希望人们必须登录,请使用此选项 在他们每次打开浏览器时。
此设置是全局默认设置,可以随时覆盖 每个会话级别通过显式调用 set_expiry() 方法 request.session 如上所述在视图中使用会话。
所以当我在我的设置文件中将 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 True 时,这确实是它的作用。这很好,因为我希望用户的会话在浏览器关闭时过期。但是,我还希望用户的会话在闲置 15 分钟后过期。如果我使用上面提到的 set_expiry() ,则 SESSION_EXPIRE_AT_BROWSER_CLOSE 将被覆盖,因此如果用户在到期前关闭浏览器然后重新打开浏览器,则会话仍然有效。不是我想要的。
此外,set_expiry() 的文档说会话在 inactivity 的设定时间后过期。这实际上不是真的。无论我的用户是否在网站上点击,它都会过期。
所以总结一下,我想做的是:
- 已将我的会话配置为如果用户关闭浏览器,会话将自动过期。
- 设置随活动更新的会话过期长度,即如果用户在网站上执行其他操作,则过期时间会被重置。
想法/建议?
【问题讨论】:
-
在关闭浏览器后进行测试,不仅是标签
标签: django session session-cookies