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