【问题标题】:Django - Is the session cookie expiry time updated when session data is modified?Django - 修改会话数据时是否更新会话 cookie 到期时间?
【发布时间】:2015-07-17 20:32:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: django session cookies


    【解决方案1】:

    我自己的问题的答案是:是的。 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2017-12-02
      • 2011-03-01
      • 2015-01-10
      • 2012-03-06
      • 1970-01-01
      • 2013-01-11
      相关资源
      最近更新 更多