gpt4 book ai didi

Django session cookie 过期日期

转载 作者:行者123 更新时间:2023-12-05 06:39:14 27 4
gpt4 key购买 nike

我正在运行一个 django (1.10) 站点。在设置中,我定义了 SESSION_COOKIE_AGE = 60*60*24*365 并将 cookie 设置为自创建后 1 年到期。

最近, session 在 session 结束时过期。简单地说,也许 session 过期没有被设置,尽管它仍然在设置中定义为早先。

可能是什么问题。为什么不遵循默认行为。我在本地服务器、测试服务器和生产服务器中都面临同样的问题。

我知道问题不清楚,因为我不知道问题的根源是什么。我想要的是将 sessionid cookie 的到期日期设置为创建后一年。

任何指示都会有所帮助。

最佳答案

该代码发生在 /django/contrib/sessions/middleware.py 中。您可以在这段代码中看到发生了什么:

if (modified or settings.SESSION_SAVE_EVERY_REQUEST) and not empty:
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:
try:
request.session.save()
except UpdateError:
raise SuspiciousOperation(
"The request's session was deleted before the "
"request completed. The user may have logged "
"out in a concurrent request, for example."
)
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,
)

如果 get_expire_at_browser_close() 返回 true,无论到期时间如何,它都会将 session 设置为在浏览器关闭时到期。使用调试器或打印语句来检查为什么/如果该函数返回 true。如果它没有返回 true,则可能是浏览器/配置问题。你可以在最后的 set_cookie 函数中看到 Django 到底写了什么。如果那里的一切看起来都不错,则您的问题可能出在浏览器端。

关于Django session cookie 过期日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44808091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com