Django - 会话数据被修改时会话cookie到期时间是否更新?

时间:2015-05-07 10:17:43

标签: django session cookies

我有一个Django应用程序,我希望用户会话在用户登录后的X天后过期。

阅读Django文档我发现相关的配置选项是SESSION_COOKIE_AGE。但是https://stackoverflow.com/a/24147980/356729表示“每次发送会话cookie时会更新会话cookie的到期部分”,默认情况下每次修改会话时都会更新。

这是否意味着,每次更新会话数据时,会话cookie到期日期都会更新为now + SESSION_COOKIE_AGE

1 个答案:

答案 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)