使子域读取父域会话
Posted
技术标签:
【中文标题】使子域读取父域会话【英文标题】:make the subdomain read parent domains sessions 【发布时间】:2012-12-25 15:33:13 【问题描述】:我正在使用 django。我托管了 xyz.com。作为同一个网站的一部分,我有 abc.xyz.com
现在我希望 abc.xyz.com 从 xyz.com 读取会话信息,以便我可以相应地对待登录用户。
我已阅读建议将 -
SESSION_COOKIE_DOMAIN = ".xyz.com"
或
SESSION_COOKIE_DOMAIN = "xyz.com"
但它们都不起作用。我该如何解决?
PS:我正在使用 nginx 将请求指向 abc.xyz.com 到 xyz.com/abc
【问题讨论】:
嗯,根据 django 文档:docs.djangoproject.com/en/dev/ref/settings/… -SESSION_COOKIE_DOMAIN = ".xyz.com"
应该可以工作。
您确定在设置 cookie 的应用上正确设置了 SESSION_COOKIE_DOMAIN 设置吗? xyz.com 应该正确设置 cookie,以便 abc.xyz.com 可以读取它。
OK '.xyz.com' 有效。我不知道我之前做了什么导致它不起作用。
【参考方案1】:
SESSION_COOKIE_DOMAIN = ".xyz.com"
工作正常。
【讨论】:
【参考方案2】:据我所知,
SESSION_COOKIE_DOMAIN = "xyz.com"
SESSION_COOKIE_NAME = "examplesessionid"
应该可以解决问题。这应该添加到两个安装中。
如果还是不行,我猜SECRET_KEY
应该是一样的。因为,Django 使用它对 cookie 数据进行签名。这将是一种解决方法。
但是,会话共享可能不是一个好主意。如果您想要单点登录,请查看 django-cas 之类的东西,它允许您拥有 2 个单独的会话,但用户只能登录一次。
【讨论】:
以上是关于使子域读取父域会话的主要内容,如果未能解决你的问题,请参考以下文章