对于SaaS应用程序,我希望每个客户端都有一个自定义子网站。每个子网站都有用户,我想使用Django的默认用户模型。
子网站由子域定义,例如client1.example.com
和client2.example.com
将是在同一个应用程序上运行的两个不同的子网站。
我希望每个子网站都有唯一的用户,例如alice@email.com
可以使用相同的用户名(电子邮件)注册多个子网站。
如何更改Django用户模型以包含client_id
,然后对unique_together
和client_id
执行username
约束?我是否必须为此重写整个身份验证后端?
答案 0 :(得分:0)
我认为定义您自己的用户模型就足够了。
从AbstractBaseUser
https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#specifying-a-custom-user-model
你需要unique_together = ('client_id', 'username',)
https://docs.djangoproject.com/en/1.7/ref/models/options/#unique-together
编辑:
在SO中找到解决方案
Django 1.7 multisite User model
他基本上创建了一个字段,它将USERNAME_FIELD的两个字段组合在一起。我不确定是否有更优雅的方式。