Django - 修改 session 数据时 session cookie过期时间是否更新?

标签 django session cookies

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

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

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

最佳答案

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

关于Django - 修改 session 数据时 session cookie过期时间是否更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098186/

相关文章:

php - Laravel 5.5 使用 Paypal 后不保存 session

python cookielib 错误 :403 Forbidden

iphone - iOS 共享CookieStorageForGroupContainerIdentifier 不起作用?

django查询模型A并从相关模型B中排除一些项目

python - 如何在 django 模型中存储函数

session - EntityManager.getReference 是否总是在 session 中返回相同的实例?

当用户输入达到一定大小时,Javascript cookie不会保存

javascript - Django 中的 Ajax POST 文件上传

python - 使用 URL 和 DRF 进行过滤

session - Tomcat servlet 同步