2010-11-05 80 views
2

我在多站点和多主机Django上看到了各种问题,包括每个子域的子域和特定模式。我没有看到的是解决方案(或技巧,所以我可以编码)解决这个问题。Django上的多个PostgreSQL模式和子域名用户

  1. 我在网站上使用Django + PostgreSQL的,比方说myapp.com
  2. 主要场地myapp.com用于公司注册
  3. 注册公司都有自己的子域名,company.myapp .com,并从那里登录并开始工作。

我的想法是通过在PostgreSQL中创建2个初始模式。

  1. 模式“权威性”为企业和用户
  2. 模式“empty_company_template”与一个公司的基本表,一切空,但挂在正确的序列等

当一个新公司寄存器,我希望这种情况发生:

  1. 为公司创造了新的模式,从empty_company_template派生
  2. 铬eate一个新的数据库用户的公司,取名公司(公司名称)
  3. 设置搜索路径为此新用户到公司,AUTH(没有进入empty_company_template,给其他用户模式的无法访问)

对我来说,这似乎比现有的解决方案更好,这些解决方案似乎都依赖于整个应用程序的单个数据库用户(可访问所有方案)。但是,我努力使这个工作。这确实是一种可行的方法吗?任何人都可以将我指向正确的方向吗?这是Django,或许它已经完成了,我只是没有找到它?

回答

3

我有一个工作解决方案,可以完成除单独用户以外的任何操作。

它是确定子域的一小块中间件(只是process_request),并对数据库执行SET search_path查询。现在对我来说已经够好了。

任何对代码感兴趣的人,请联系我。我会在最终决定时将它发布到某个地方。

编辑2010年12月22日:

我发表在我的博客的代码在 http://blog.dyve.net/django-subdomains-and-postgresql-schemas

+0

我很想知道这个解决方案是否仍然适用于你。如果您决定转向其他方面,请更新。 – 2012-09-26 00:15:17

0

如果你想拥有单独的数据库用户,你可能需要单独的Django实例,否则不会有安全性的增益。这个模型将需要更复杂的流程管理。我认为你不会为这样的应用程序找到现成的解决方案,所以你很可能不得不推出自己的应用程序。否则,如果您不愿意投入太多时间,请坚持使用整个应用程序方法的一位用户。

+0

我的工作出来的东西我自己,我希望能证明你错了:-) – dyve 2010-11-22 07:10:15

+0

我喜欢被证明错误:)(虽然本身没有错) – 2010-11-24 07:13:59