Kann mir jemand erklären, was im Passwort-Reset-Token von Flasch-Security passiert? Der Code ist hier auf GitHub:Erläuterung der tokenbasierten Funktion zum Zurücksetzen von Kennwörtern in Flask-Security
https://github.com/mattupstate/flask-security/blob/develop/flask_security/recoverable.py
(Es kann ein Verzeichnis andere Teile sein.)
Mein Verständnis von dem, was passiert:
- In der Route durch FORGOT_PASSWORD definiert () Benutzer sendet ein Formular zum Zurücksetzen des Passworts
- Ein "reset_password_token" wird generiert. Dies besteht aus der ID des Benutzers + einem md5() des aktuellen (gespeicherten-verschlüsselten) Passworts des Benutzers?
- Es wird eine Verknüpfung zu einer Adresse für das Zurücksetzen des Kennworts mit dem Token generiert.
- Dieser Link wird an die von user.email angegebene Adresse gesendet.
- Wenn der Benutzer auf diesen Link klickt, wird eine Route (in Sichten definiert) angezeigt, bei der es sich um reset_password (Token) handelt. Der Token-Wert ist ein Argument für diese Route.
- Die Route bewertet, ob das Token gültig und nicht abgelaufen ist.
- Wenn ja, rendert diese Route ein Formular, das nach einem neuen Kennwort fragt, ResetPasswordForm().
Ist das korrekt?
auch:
- Wenn oben richtig ist, ist es sicher, die Token einen neuen md5 enthalten machen() des aktuellen Passwort? Ich weiß, es sollte einzigartig und teuer sein, umzukehren, aber immer noch?
- Wo ist das Ablaufdatum gespeichert?
Ich bin ganz speziell verwirrt durch die generate_password_reset Funktion
data = [str(user.id), md5(user.password)] return _security.reset_serializer.dumps(data)
und der
get_token_status(token, 'reset', 'RESET_PASSWORD')
Funktion innerhalb reset_password_token_status(token)