单个安装,多个域和应用程序?

Jas*_*zek 6 python django single-sign-on

我计划将Django用于多站点项目,其中每个站点大多是独立的,但是会在所有站点之间共享一些模型.

我想知道是否有办法让每个Django'应用'它自己的网站,完整的独特的域名,并仍然允许每个网站访问包含用户帐户,配置文件等的一些模型的常见应用程序.

该计划允许单点登录到每个站点,通过公共应用程序共享帐户信息,并在用户登录后为每个站点创建cookie.

我知道Django有一个"网站"功能,但我不确定它是否足够强大以满足我的需求.

任何人都可以推荐一种方法来做到这一点或指向我可能有帮助的任何文章?

UPDATE

只是想知道,是否有可能通过apache,并可能对urls.py进行一些修改,以便能够将某个域指向url结构?

例如,假设主站点是mainsite.com,我希望其他域之一指向mainsite.com/secondarysite,其中secondarysite是同一实例中的django应用程序,并且apache掩盖了secondarysite的事实. com域实际上是指向不同的位置?

sli*_*nkp 6

回覆.您的更新:您不需要伪造这样的URL结构,除非您还希望用户可以直接使用mainsite.com/secondarysite等URL.

我假设您正在使用基于名称的虚拟主机.一个简单但非常灵活的方法是让每个<VirtualHost>指令通过通常的mod_wsgi配置指令调用不同的wsgi脚本,然后每个wsgi脚本可以设置os.environ['DJANGO_SETTINGS_MODULE']指向不同的设置文件.

每个设置文件都可以具有不同的ROOT_URLCONF,因此您可以根据需要配置不同路径的视图.利用这种include机制.

如果您希望两个域对所有内容使用相同的数据库,只需让两个设置文件从第三个文件加载数据库配置,例如.settings_shared.py.或者,如果您想将某些模型路由到共享数据库,而其他模型则不是,那也是可能的.很容易想象如何为每个域配置:

from settings_shared import DATABASES_SHARED
DATABASES = DATABASES_SHARED.copy()
DATABASES.update({ ... })
Run Code Online (Sandbox Code Playgroud)

此方法负责为每个域配置URL和数据库.但它没有照顾单点登录.

对于SSO部分,它实际上取决于您想要的用户体验类型以及您有多少时间;)

尝试搜索"django sso".这里有很多相关问题,例如: 使用Django实现单点登录(SSO), 如何在不同站点之间构建安全的Django单点登录?,Django + Google SSO openid,使用单点登录(SSO)集成Django和.Net应用程序,(Django)在不同域上的两个站点之间共享身份验证


归档时间:

查看次数:

739 次

最近记录:

13 年,4 月 前