使用通用身份验证/注册后端分隔Django站点

时间:2011-09-07 13:16:02

标签: python django django-sites

我需要将当前的Django应用程序拆分为两个站点。

站点A将包含面向公众的站点,该站点将包含所有静态页面和注册系统。

另一个站点 - 站点B - 是注册用户的站点。他们还可以通过站点B登录到应用程序站点。

如果我没弄错的话,我可以使用django.contrib.sites框架来完成拥有多个站点的任务,但是可以有一个共同的认证/注册后端吗?

我该如何做到这一点?

感谢。

3 个答案:

答案 0 :(得分:2)

对于这种情况,您将有2个名为settings_A.py和settings_B.py的settings.py文件,用于指定from settings import *

A的SITE = 1,B的SITE = B.然后,您可以通过为每个虚拟主机设置环境变量来为您的apache配置设置这些文件DJANGO_SETTINGS_MODULE = settings_A和DJANGO_SETTINGS_MODULE = settings_B

然后设置contrib.sites应用程序,将您的2个域名绑定到相应的站点ID,您的flatpages将能够绑定到其中一个或两个站点。

最后,在settings_A.py settings_B.py中,您可以指定单独的根urlconfs,也可以使用urlconfs中的settings.SITE来启用和禁用每个站点的URL组。

希望这有帮助

编辑:澄清:只要您在两个站点之间使用相同的数据库和SECRET_KEY,您也可以在它们之间使用相同的用户帐户。如果网站的格式为example.com和private.example.com,则将SESSION_COOKIE_DOMAIN设置为.example.com将允许会话在两个网站之间继续进行。

答案 1 :(得分:2)

如果两个站点在同一服务器下运行并访问同一个数据库,则Django的django.contrib.sites框架很不错。如果您有分布式应用程序(不同主机上的不同站点或不同数据库上的不同站点),则可以使用单点登录解决方案。

我将OpenID与自定义提供程序一起使用,以集中在不同数据库上运行的应用程序之间的登录。其他解决方案包括CASproviderconsumer)。

答案 2 :(得分:0)

您可以对两个站点使用(外部)LDAP身份验证。您需要两个站点都可以访问的LDAP服务器。我从来没有使用过这个,但我不知道它与Django auth的集成程度如何。见http://packages.python.org/django-auth-ldap/