Что именно является параметром «имя пользователя» в функции аутентификации django? - PullRequest
0 голосов
/ 31 января 2020

Из документации о django.contrib.auth.authenticate функции мы находим -

Используйте authenticate () для проверки набора учетных данных. Он принимает учетные данные в качестве аргументов ключевых слов, имя пользователя и пароль для случая по умолчанию, проверяет их по каждому бэкэнду аутентификации и возвращает объект User, если учетные данные действительны для бэкэнда.

Теперь мой вопрос: что они подразумевают под именем пользователя?

  • Это имя столбца модели?
  • Или это первичный ключ модели?

На самом деле, я был отправка электронной почты в качестве имени пользователя, потому что я хотел проверить учетные данные на основе электронной почты (первичный ключ), а не имени пользователя (что бы это ни значило), но это не сработало ... Но я назвал один из столбцов моей модели имя пользователя но это все равно не сработало ... Итак, мне интересно, что они подразумевают под username точно.

Мой код, который не работал -

email = request.POST['email']
#email = request.POST['username'] Changed email column-name to username but didn't work!
password = request.POST['password']
user = authenticate(request, username=email, password=password)
print (user) ## None

1 Ответ

1 голос
/ 31 января 2020

Модель пользователя по умолчанию содержит атрибут username (столбец модели), который используется для идентификации пользователя в бэкэнде аутентификации. У вас есть две возможности:

  • Создать новую модель пользователя без атрибута имени пользователя, чтобы использовать электронную почту для аутентификации (необходимо создать новый бэкэнд аутентификации)

  • Просто измените сервер аутентификации для аутентификации по электронной почте или по обоим адресам и оставьте имя пользователя Атрибут

Чтобы заменить имя пользователя электронным письмом:
https://medium.com/@ramykhuffash / django -аутентификация-просто-по-электронной почте и пароль-имя-пользователя-обязательно-33e47976b517
Django - Войти по электронной почте

Если вы просто хотите изменить сервер аутентификации, аутентифицируйтесь по электронной почте:
Django - Войти по электронной почте

PS Аргумент username аргумента * Функция 1030 * не должна быть переименована, даже если вместо этого вы используете email.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...