【问题标题】:How to share Django sessions across newly added subdomains如何在新添加的子域之间共享 Django 会话
【发布时间】:2018-09-24 22:20:46
【问题描述】:

我最近向我的 django 网站(都在同一个应用下)添加了一些新的子域(例如 x.example.com),我希望用户在这些子域中保持登录状态。

根据Django docs,我可以简单地将SESSION_COOKIE_DOMAIN 设置为".example.com" 来执行此操作,但文档中提到了这个警告:

在生产站点上更新此设置时要小心。如果您更新此设置以在以前使用标准域 cookie 的站点上启用跨域 cookie,则现有用户 cookie 将设置为旧域。只要这些 cookie 持续存在,这可能会导致他们无法登录。

鉴于我目前使用的是标准域 cookie,这当然适用于我!但是,文档没有提供解决方案。

如何将SESSION_COOKIE_DOMAIN 切换为跨域而不破坏现有用户的会话(理想情况下,不强制他们退出)?

【问题讨论】:

  • @T.Tokic 我相信那里的答案似乎建议使用SESSION_COOKIE_DOMAIN = ".example.com"。我知道我需要这样做;我的问题是关于如何在我现有用户“无法登录”的情况下切换到该设置,因为 django 文档提到会发生。

标签: django django-sessions


【解决方案1】:

要优雅地更改SESSION_COOKIE_DOMAIN,而不影响现有用户,您可以将SESSION_COOKIE_NAME 更改为新名称。默认情况下,它设置为sessionid。如果您将其设置为其他名称,例如 newsessionid,所有现有用户都必须重新登录,因为新的 cookie 不会出现在他们的请求中。

在 Django 文档 SESSION_COOKIE_NAME 中了解更多信息。

【讨论】:

    猜你喜欢
    • 2016-12-27
    • 2021-12-26
    • 1970-01-01
    • 2017-07-03
    • 2014-01-29
    • 2017-06-11
    • 2012-05-11
    • 2011-06-16
    • 2023-03-09
    相关资源
    最近更新 更多