我在django工作一个项目,它要求在自己的username
名称空间中有独立的用户组。
例如,我可能有多个“组织”,而且username
在该组织中应该是唯一的。
我知道我可以通过使用另一个包含用户名/组织id的模型来实现这一点,但是这仍然会在defualt django authUser
上留下这个无用的(并且是必需的)字段,我必须用一些东西来填充它。
我已经编写了自己的身份验证后端,根据LDAP验证用户。然而,正如我前面提到的,我仍然要解决如何填充/忽略默认django用户上的username
字段的问题。
有没有办法为Django auth用户的username
删除唯一性约束?
我个人并没有被要求找到解决方案,但解决这个问题的一个方法(从SAAS的角度)是在用户名前面加上组织标识符(假定是唯一的组织)。例如:subdomain.yoursite.com等同于用户名为:subdomain_username的用户。您只需在登录到子域时编写一些业务逻辑,就可以将其附加到用户名上。
我不确定这是否正是你想要的,但我认为你可以使用类似于this answer中的方法。
只要在Django加载模型时执行以下代码,这些代码就可以工作。
请注意,如果已经创建了
auth_user
表,则这不会更改该表上的数据库唯一约束。因此,您需要在运行syncdb之前进行此更改。或者,如果不想重新创建auth_user
表,可以进行此更改,然后手动更改数据库表以删除约束。您可以做的是扩展用户模型。对于用户表,生成一个不会在站点中显示的用户名(例如a_123、a_345)。
然后创建一个扩展用户的新模型。
然后创建使用AppUser而不是用户对象的自定义身份验证后端。
相关问题 更多 >
编程相关推荐