Django的会议在浏览器关闭或时间到期后(Django session expires at br

2019-08-05 11:50发布

Django的文档状态:

您可以控制会议框架是否使用浏览器同步的Session和持久的Session与SESSION_EXPIRE_AT_BROWSER_CLOSE设置。

如果SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True,Django会使用浏览器的Cookie - 随着用户关闭其浏览器,一旦过期饼干。 如果你希望人们在每次打开浏览器登录的时间使用这个。

此设置是一个全局缺省,并且可以在每会话级别通过如在视图中使用的会话上述显式调用的request.session的set_expiry()方法被覆盖。

所以,当我在设置文件中设置SESSION_EXPIRE_AT_BROWSER_CLOSE为True,这的确是它做什么。 因为我想用户的会话在浏览器关闭过期这是一件好事。 不过,我也希望用户的会话到期后,说,闲置超过15分钟。 如果我使用set_expiry()如上所述,SESSION_EXPIRE_AT_BROWSER_CLOSE被重写,所以如果一个用户关闭浏览器,然后重新打开浏览器到期之前,该会话仍然有效。 不是我想要的。

此外,set_expiry文档()说,会议的活动设定的时间量之后到期。 这实际上是不正确的。 它到期不管是什么,我的用户是否点击左右在现场与否。

因此,要总结,我想要做的是:

  1. 有我的会话配置,如果用户关闭浏览器时,会自动终止。
  2. 设置与活动更新会话过期长度,即如果用户做了网站上的其他人,到期复位。

思考/建议吗?

Answer 1:

作为Jiaaro中建议这个答案你可以使用SESSION_EXPIRE_AT_BROWSER_CLOSE ,并在每个请求设置会话的时间戳和添加自定义Middleware来处理闲置。



Answer 2:

从文档https://docs.djangoproject.com/en/1.8/topics/http/sessions/#browser-length-sessions-vs-persistent-sessions

有些浏览器(Chrome浏览器,例如)提供设置,允许用户继续关闭并重新打开浏览器后浏览会话。 在某些情况下,这可能与SESSION_EXPIRE_AT_BROWSER_CLOSE设置干扰和防止会议由即将于浏览器关闭。 请注意这一点的同时测试其启用了SESSION_EXPIRE_AT_BROWSER_CLOSE设置Django的应用。



Answer 3:

会话过期当用户关闭浏览器:

这一要求通过设置SESSION_EXPIRE_AT_BROWSER_CLOSETrue实施。

参考

会话停止活动一段时间后失效:

SESSION_COOKIE_AGE是会话cookie的年龄,单位为秒。
默认值:1209600(2周,单位为秒)

参考

您必须在自己设置这些选项setting/__init__.py



文章来源: Django session expires at browser close OR after time