我最近在我的django网站(都在同一应用程序下)中添加了一些新的子域(例如x.example.com
,我希望用户在这些子域中保持登录状态。
根据Django docs,我可以简单地将SESSION_COOKIE_DOMAIN
设置设置为".example.com"
来做到这一点,但是文档中提到了此警告:
在生产站点上更新此设置时请谨慎。如果您更新此设置以在以前使用标准域cookie的站点上启用跨域cookie,则现有用户cookie将被设置为旧域。只要这些cookie持续存在,这可能会导致它们无法登录。
鉴于我当前正在使用标准域cookie,这当然适用于我!但是,文档没有提供解决方案。
如何在不破坏现有用户会话的情况下(最好是不强迫他们注销)如何将SESSION_COOKIE_DOMAIN
切换为跨域?
要正常更改SESSION_COOKIE_DOMAIN
,而又不影响现有用户,您可以将SESSION_COOKIE_NAME
更改为新名称。默认情况下,它设置为sessionid
。如果将其设置为其他名称,例如newsessionid
,则所有现有用户都将不得不重新登录,因为新的cookie将不会出现在他们的请求中。
在Django文档SESSION_COOKIE_NAME中了解有关此内容的更多信息。