Может ли кто-нибудь пройти меня через то, что происходит в токене сброса пароля флай-безопасности? Код здесь на GitHub:Объяснение функциональности сброса пароля на токенах в Flask-Security
https://github.com/mattupstate/flask-security/blob/develop/flask_security/recoverable.py
(Там могут быть и другие части до каталога.)
Мое понимание того, что происходит:
- В маршруте, определенном forgot_password () Пользователь отправил форму на сброс пароля
- Создано "reset_password_token". Это состоит из идентификатора пользователя + md5() текущего (зашифрованного) пароля пользователя?
- Ссылка создана для адреса пароля сброса, содержащего токен.
- Эта ссылка отправлена по электронной почте по адресу user.email
- Когда пользователь нажимает на эту ссылку, они переходят на маршрут (определенный в виде), который является reset_password (токен). Значение токена является аргументом для этого маршрута.
- Маршрут оценивает, действителен ли токен и не истек.
- Если да, этот маршрут отображает форму с запросом нового пароля, ResetPasswordForm().
Верно ли это?
также:
- Если выше правильно, безопасно, чтобы сделать маркер содержит новую md5() текущего пароля? Я знаю, что это должно быть уникальным и дорогостоящим, но все же?
- Где хранится срок годности?
Я наиболее определенно спутать функцией generate_password_reset
data = [str(user.id), md5(user.password)] return _security.reset_serializer.dumps(data)
и функции
get_token_status(token, 'reset', 'RESET_PASSWORD')
внутри reset_password_token_status(token)