Czy ktoś może opowiedzieć mi o tym, co dzieje się w tokenie resetowania hasła w pakiecie? Kod jest tutaj na github:Wyjaśnienie funkcji resetowania hasła opartej na tokenie w Flask-Security
https://github.com/mattupstate/flask-security/blob/develop/flask_security/recoverable.py
(Nie mogą być inne części up katalogiem.)
Moje zrozumienie tego, co się dzieje:
- W trasie wyznaczonej przez forgot_password () użytkownik przesyła formularz do zresetowania hasła
- Generowany jest "reset_password_token". Składa się z identyfikatora użytkownika + md5() aktualnego (przechowywanego-zaszyfrowanego) hasła użytkownika?
- Link jest generowany w celu zresetowania adresu hasła zawierającego token.
- Ten link jest wysyłany pocztą elektroniczną na adres podany przez użytkownika.email
- Po kliknięciu tego łącza użytkownik przechodzi do trasy (zdefiniowanej w widokach), która jest reset_password (token). Wartość tokena jest argumentem dla tej trasy.
- Trasa sprawdza, czy token jest ważny i czy nie wygasł.
- Jeśli tak, ta trasa renderuje formularz z prośbą o nowe hasło ResetPasswordForm().
Czy to prawda?
również:
- Jeśli powyższe jest prawidłowe, czy jest to bezpieczne, aby token zawierać nową md5() bieżącego hasła? Wiem, że odwrócenie powinno być unikalne i kosztowne, ale nadal?
- Gdzie jest przechowywana data ważności?
jestem najbardziej specyficznie mylone przez funkcję generate_password_reset
data = [str(user.id), md5(user.password)] return _security.reset_serializer.dumps(data)
i funkcji
get_token_status(token, 'reset', 'RESET_PASSWORD')
wewnątrz reset_password_token_status(token)