Django 设置之设置 session 过期时间

在 settings.py 中进行设置

1
2
3
4
5
6
7
8
SESSION_COOKIE_NAME  "sessionid"      # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(数字为秒数)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)
  • 在settings.py文件任意位置(推荐底部,方便查找)添加即可
  • 支持乘法:SESSION_COOKIE_AGE = 60*30 # 30分钟。
  • SESSION_SAVE_EVERY_REQUEST = True和SESSION_EXPIRE_AT_BROWSER_CLOSE = True 需同时设置,否则会导致过期时间无法生效
  • 设置 SESSION_COOKIE_AGE 和 SESSION_EXPIRE_AT_BROWSER_CLOSE 均不生效。 通过查看django的源代码”middleware.py”才知道这两个参数只有在settings.SESSION_SAVE_EVERY_REQUEST 为True时才有效。
  • SESSION_EXPIRE_AT_BROWSER_CLOSE为True时 SESSION_COOKIE_AGE 不同时生效。也就是说用户只能二选一,在浏览器关闭时使session失效 或 超时失效。

代码中设置

request.session.set_expiry(value)

你可以传递四种不同的值给它:

  • 如果value是个整数,session会在些秒数后失效(适用于整个Django框架,即这个数值时效时整个页面都会session失效)。
  • 如果value是个datatime或timedelta,session就会在这个时间后失效。
  • 如果value是0,用户关闭浏览器session就会失效。
  • 如果value是None,session会依赖全局session失效策略。

Django 设置之设置 session 过期时间
https://flepeng.github.io/021-Python-32-框架-Django-Django-设置之设置-session-过期时间/
作者
Lepeng
发布于
2021年8月8日
许可协议