我需要将我当前的Django应用程序拆分为两个网站。独立的Django网站与共同的认证/注册后端
网站A将包含面向公众的网站,该网站将包含所有静态页面和注册系统。
其他网站 - 网站B - 是注册用户的网站。他们也可以通过站点B登录到应用程序站点。
如果我没有弄错,我可以使用django.contrib.sites
框架来完成拥有多个站点但可以拥有共同认证/注册后端的任务吗?
我该如何做到这一点?
谢谢。
我需要将我当前的Django应用程序拆分为两个网站。独立的Django网站与共同的认证/注册后端
网站A将包含面向公众的网站,该网站将包含所有静态页面和注册系统。
其他网站 - 网站B - 是注册用户的网站。他们也可以通过站点B登录到应用程序站点。
如果我没有弄错,我可以使用django.contrib.sites
框架来完成拥有多个站点但可以拥有共同认证/注册后端的任务吗?
我该如何做到这一点?
谢谢。
对于这种情况,则必须2个settings.py文件称为settings_A.py和settings_B.py它们指定from settings import *
A必须SITE = 1和B将具有SITE = B。那么你可以通过设置环境变量对每个虚拟主机DJANGO_SETTINGS_MODULE = settings_A并设置你的apache的configs这些文件DJANGO_SETTINGS_MODULE = settings_B
然后您设置contrib.sites应用程序绑定到相应的网站ID您的二级域名,并且您的网页将能够绑定到其中一个或两个网站。
最后,在settings_A.py settings_B.py中,您可以指定单独的urlconfs,也可以使用urlconfs中的use.Site来启用和禁用每个站点的URL组。
希望这有助于
编辑:为了澄清:只要你使用这两个网站之间的相同的数据库和SECRET_KEY,你可以在它们之间使用相同的用户账号了。如果这些网站的格式为example.com和private.example.com,那么将SESSION_COOKIE_DOMAIN设置为.example.com将允许会话在两个网站之间继续。
嗨托马斯。这听起来合理。这是否意味着登录到站点A的人将能够登录到站点B?一个很好的例子是谷歌,如果你登录他们的主页,你可以访问你的Gmail,文档等。我需要实现类似的东西 - 跨域身份验证。谢谢。 –
如果两个域共享一个根域,则您只能默认进行跨域自动登录。 domain.com,sitea.domain.com和siteb.domain.com。 (这就是为什么所有谷歌网站都使用google.com作为其基本域)。但是,您可以拥有一个可用于登录两个站点的User对象。对于完全不同的域之间的永久登录,请尝试以下方法:http://stackoverflow.com/questions/263010/whats-your-favorite-cross-domain-cookie-sharing-approach – Thomas
如果你喜欢这个答案,你可以标记为正确? – Thomas
您可以对两个站点使用(外部)LDAP身份验证。您需要在两个站点都可以访问的地方使用LDAP服务器。我从来没有使用过这个,但我不知道它如何与Django auth集成。请参阅http://packages.python.org/django-auth-ldap/
+1:从来没有这种情况,但始终是如何在我的django应用程序中使用多个网站的事情! –