我有一个Django应用程序,我希望用户会话在用户登录后的X天后过期。
阅读Django文档我发现相关的配置选项是SESSION_COOKIE_AGE。但是https://stackoverflow.com/a/24147980/356729表示“每次发送会话cookie时会更新会话cookie的到期部分”,默认情况下每次修改会话时都会更新。
这是否意味着,每次更新会话数据时,会话cookie到期日期都会更新为now + SESSION_COOKIE_AGE
?
答案 0 :(得分:2)
我自己的问题的答案是:是的。 Here是相关代码:
if modified or settings.SESSION_SAVE_EVERY_REQUEST:
if request.session.get_expire_at_browser_close():
max_age = None
expires = None
else:
max_age = request.session.get_expiry_age()
expires_time = time.time() + max_age
expires = cookie_date(expires_time)
# Save the session data and refresh the client cookie.
# Skip session save for 500 responses, refs #3881.
if response.status_code != 500:
request.session.save()
response.set_cookie(settings.SESSION_COOKIE_NAME,
request.session.session_key, max_age=max_age,
expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,
path=settings.SESSION_COOKIE_PATH,
secure=settings.SESSION_COOKIE_SECURE or None,
httponly=settings.SESSION_COOKIE_HTTPONLY or None)