помогите с логикой реализации аутентификации
Подскажите как организовать аутентификацию пользователя без ввода пароля и логина , если пользователь зарегистрирован то отправить ему на почту ссылку по которой он перейдет и залогинится с использованием flask.
Ответы (1 шт):
Автор решения: Roman Konoval
→ Ссылка
Грубо говоря, обычно процесс работает так:
- каждая защищенная страница перенаправляет неаутентифицированных пользователей на страницу логина
- на странице логина пользователь вводит логин и пароль
- обработчик логина проверяет правильный ли логин и пароль.
- Если правильный - записывает идентификатор пользователя в сессию. А идентификатор сессии передается в куки.
- Для каждой защищенной страницы проверяем, чтоб был куки с идентификатором сессии, а в сессии смотрим, чтоб был идентификатор пользователя.
Для логина без пароля через email можно сделать, например, так. Меняем некоторые шаги:
- на странице логина просим ввести только email. Далее обработчик сгенерирует URL с токеном для логина и пошлет его почтой.
- когда пользователь открывает URL из почты, то обработчик по токену установит идентификатор пользователя и далее продолжит, как и в предыдущем случае.
Сам токен можно хранить, скажем, в БД, привязав к пользователю. Но лучше и удобней воспользоваться JWT, в котором можно сразу передавать идентификатор пользователя и устанавливать время действия токена.