允许重复的用户名
我正在开发一个django项目,它要求在他们自己的username
空间中分隔用户组。
例如,我可能有多个“组织”, username
只能在该组织内唯一。
我知道我可以通过使用另一个包含用户名/组织ID的模型来做到这一点,但仍然会在defualt django auth User
上留下这个无用的(和必填)字段,我将不得不填充某些内容。
我已经通过自己的身份验证后端编写了一个针对LDAP的用户身份验证。 但是,正如我前面提到的,我还是坚持了如何填充/忽略问题username
在默认的Django用户字段。
有没有办法删除Django auth用户username
的唯一性限制?
我不确定这是否正是您要查找的内容,但我认为您可以使用类似于此答案中的内容。
下面的代码可以工作,只要它在Django加载模型时执行的地方。
from django.contrib.auth.models import User
User._meta.get_field('username')._unique = False
请注意,如果auth_user
表已被创建,这不会更改auth_user
表上的数据库唯一约束。 因此,您需要在运行syncdb 之前进行此更改。 或者,如果您不想重新创建auth_user
表,则可以进行此更改,然后手动更改数据库表以删除约束。
你可以做的是扩展用户模型。 对于用户表,生成根本不会在网站上显示的用户名(例如A_123,A_345)。
然后创建一个扩展用户的新模型。
class AppUser(User):
username = models.CharField...
organization = models.CharField...
然后,您创建使用AppUser而不是User对象的自定义身份验证后端。
我没有亲自被要求找到解决方案,但是解决这个问题的一种方法(从SAAS的角度来看)是在用户名前加一个组织标识符(假定独特的组织)。 例如:subdomain.yoursite.com将等同于具有用户名:subdomain_username的用户。 您只需在登录到子域时编写一些业务逻辑即可将其添加到用户名中。
链接地址: http://www.djcxy.com/p/5767.html