当为Django站点使用子域时,如何在localhost上的子域之间共享django登录?

Mik*_*keN 6 django django-authentication

我想让相同的用户会话跨越:site.com
sub1.site.com
sub2.site.com

如何在Django中执行此操作?使用默认的auth用户包,似乎要求用户每次使用不同的会话登录所有3个站点.他们如何共享相同的登录cookie和会话ID?

更新:使用settings.py中的SESSION_COOKIE_DOMAIN值似乎可以在生产站点上运行,但它在localhost/dev服务器上对我不起作用.你如何让它为localhost子域工作?当我将SESSION_COOKIE_DOMAIN更改为生产网站名称或".localhost"时,django auth登录完全停止工作(我无法登录,在localhost上没有创建cookie.)

Mik*_*keN 12

我想我有一个解决方法,但无法使用localhost.我只能让它适用于映射到127.0.0.1的测试".com"域.

在我的/ etc/hosts文件中(在OSX上:)

    127.0.0.1  test.com
    127.0.0.1  sub1.test.com
    127.0.0.1  sub2.test.com

然后在我的开发settings.py上:

    SESSION_COOKIE_DOMAIN=".test.com"

我无法使用普通的"localhost"工作,似乎我需要".com"字符串才能使其工作.那么我可以登录并使用sub1.test.com:8000和sub2.test.com:8000在我的浏览器中交叉子域auth cookie.