Расположение суперпользователя сервера с множественной аутентификацией Django

#django #authentication

#django #аутентификация

Вопрос:

Я использую django. Помимо django.contrib.auth я создал второй сервер аутентификации django.contrib.companyauth и аналогичную папку с соответствующими типами содержимого в django.contrib. Все работает нормально, но когда я запускаю syncdb, суперпользователь создается в companyauth> Пользователи (т. Е. В таблице пользователей 2-го сервера аутентификации) страницы администратора, вместо этого мне нужно, чтобы этот суперпользователь был создан в auth> Пользователи страницы администратора. Как этого добиться? (Я не могу найти какой-либо временный способ).

Ответ №1:

Пользователь вашей компании должен «расширяться» из Auth.Пользователь, если вы хотите использовать какие-либо инструменты авторизации Django…

Попробуйте изменить модель пользователя вашей компании на что-то вроде этого

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

Таким образом, ваш request.user является пользователем Auth.Пользователь и если вы хотите получить пользователя компании, вам просто нужно:

 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'
)
  

Надеюсь, это поможет 😉

Комментарии:

1. Это помогает. Хотя я уже внедрил другую систему авторизации с помощью встроенной аутентификации, но я обязательно буду использовать это в своих будущих проектах.

2. Я рад, что был полезен.