помогите с логикой реализации аутентификации

Подскажите как организовать аутентификацию пользователя без ввода пароля и логина , если пользователь зарегистрирован то отправить ему на почту ссылку по которой он перейдет и залогинится с использованием flask.


Ответы (1 шт):

Автор решения: Roman Konoval

Грубо говоря, обычно процесс работает так:

  1. каждая защищенная страница перенаправляет неаутентифицированных пользователей на страницу логина
  2. на странице логина пользователь вводит логин и пароль
  3. обработчик логина проверяет правильный ли логин и пароль.
  4. Если правильный - записывает идентификатор пользователя в сессию. А идентификатор сессии передается в куки.
  5. Для каждой защищенной страницы проверяем, чтоб был куки с идентификатором сессии, а в сессии смотрим, чтоб был идентификатор пользователя.

Для логина без пароля через email можно сделать, например, так. Меняем некоторые шаги:

  1. на странице логина просим ввести только email. Далее обработчик сгенерирует URL с токеном для логина и пошлет его почтой.
  2. когда пользователь открывает URL из почты, то обработчик по токену установит идентификатор пользователя и далее продолжит, как и в предыдущем случае.

Сам токен можно хранить, скажем, в БД, привязав к пользователю. Но лучше и удобней воспользоваться JWT, в котором можно сразу передавать идентификатор пользователя и устанавливать время действия токена.

→ Ссылка