#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. Я рад, что был полезен.