Django-多租户架构。如何为一个应用创建多个用户

时间:2020-06-21 17:18:54

标签: django multiple-users

myproject
 |- myapp

我创建了一个django项目,该项目中包含一个可以查看,将数据添加到数据库等的应用程序。现在,我想创建多个可以使用此应用程序处理自己数据的用户。最好的方法是什么。

让我们说有3个用户user1,user2,user3。用户1为公司1工作,用户2为公司2工作,用户3为公司3工作。因此,每个用户都有自己的数据。

目前,我正打算这样做。 我复制myapp代码并创建与每个用户相对应的3个应用。所以项目目录看起来像这样

myproject
  |- myapp
  |- myappuser1
  |- myappuser2
  |- myappuser3

因此,我现在有3个功能相似的应用程序,每个用户都有自己的数据。现在,障碍是如何限制访问权限,以便每个用户都能看到自己的应用程序。例如,user1应该只能看到myappuser1内容,而user2应该只能看到myappuser2内容。我怎样才能做到这一点 ?我尝试在django admin中创建组,但这仅授予我编辑myapp下对模型的访问权限。并没有限制用户查看其他用户的页面。

选项2: 为每个用户创建单独的django项目。这解决了用户限制,但是要在heroku中进行部署,我应该将每个人都注册为应用程序,然后必须创建一个唯一的登录页面,每个客户都可以通过该页面登录,否则我必须为每个用户提供不同的登录网址。

请问是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

如果您确实正在寻找多租户架构,我建议您看一下库django-tenant-schemas

我相信您在使用术语 users 时比较宽松,意味着他们是属于客户的用户。例如,您有一个具有三个客户端的应用程序

  • A(它具有用户A1,A2,A3)
  • B(它具有用户B1,B2,B3)
  • C(它具有用户C1,C2,C3)

因此,当用户C3登录时,他/她应该只能查看客户端C的数据,而不能查看客户端A / B的数据。

如果这确实是您的要求,您可以看看我之前建议的库。