Django多重身份验证后端超级用户位置

时间:2014-06-26 22:20:35

标签: django authentication

我正在使用django。除了django.contrib.auth之外,我在django.contrib中创建了第二个身份验证后端django.contrib.companyauth和相应内容类型的类似文件夹。一切正常,但是当我运行syncdb时,超级用户是在adminauth>用户(即在第二个身份验证后端的用户表中)的管理页面中创建的,而我需要在auth> admin页面的用户中创建这个超级用户。怎么做到这一点? (我无法找到任何临时方式)。

1 个答案:

答案 0 :(得分:0)

贵公司用户必须"延长"来自Auth.User,如果你想使用任何Django授权工具......

尝试将公司用户模型更改为此类

class CompanyUser(models.Model):
    user = models.OneToOneField(User)
    ## Whatever fields you want to use 
    observations= models.CharField(max_length=2048)

这样,您的request.user是Auth.User,如果您想获得公司用户,您只需:

CompanyUser.objects.get(user=request.user)

老实说,我不会实施另一个授权系统......

现在回答你的问题,这里是你如何创建一个用户,在这种情况下,是一个超级用户:

## Creating Auth.User
base_user = User.objects.create(
    username  = 'username', 
    password  = make_password('password') , 
    email     = 'email',
    first_name= 'first_name',
    last_name = 'last_name',
    is_superuser = 1
)
## Extending User to CompanyUser
extended_user = CompanyUser.objects.create(
    user = base_user, 
    observations='observations'
)

我希望它有所帮助; - )