Модель аутентификации django - вход по ссылке, отправленной по электронной почте?
Есть ли способ настроить модель аутентификации django, при которой вместо пароля пользователи вводят свой адрес электронной почты, а затем получают по электронной почте ссылку, на которую они нажимают для входа в систему? Если да, то есть ли какие-нибудь учебники по настройке этой модели?
Да, есть.
Вам придется надеяться, что для этого уже есть модуль, иначе вам придется написать свой собственный способ аутентификации.
Я дам приблизительную оценку того, как это будет работать.
- Сначала необходимо создать
class
, наследующий отAbstractBaseUser
.
- Установите поле имени пользователя на email, все еще включайте поля пароля. Они являются обязательными.
- Затем, вам нужно будет создать менеджера для этого пользовательского базового пользователя.
- Менеджер пользователя должен иметь два метода:
create_user()
иcreate_superuser()
.
- Затем, в представлении, пусть пользователь введет свой адрес электронной почты, а затем сгенерирует токен с помощью Django's
default_token_generator
и отправит его по электронной почте пользователю. - Создайте представление, которое принимает токен и регистрирует пользователя.
Я настоятельно советую вам использовать документацию в качестве руководства. Это может оказаться относительно сложным.
Больше информации на Django Docs
Примечание: Это не так безопасно, как проверка электронной почты и пароля. Если электронная почта пользователя будет взломана, хакеры сразу же узнают не только, на какой сайт они могут напасть, но и получат свободный доступ.
Альтернативный вариант: посмотрите Django AllAuth, он предоставляет множество способов аутентификации, в том числе с помощью Gmail или Facebook. В сети есть несколько отличных руководств, но вам придется немного погуглить. ;)