Ai đó có thể hướng dẫn tôi những gì đang diễn ra trong mã thông báo đặt lại mật khẩu của bảo mật không? Mã này là ở đây trên github:Giải thích về chức năng đặt lại mật khẩu dựa trên mã thông báo trong Flask-Security
https://github.com/mattupstate/flask-security/blob/develop/flask_security/recoverable.py
(Có thể có các bộ phận khác lên một thư mục.)
hiểu biết của tôi về những gì đang xảy ra:
- Trong con đường xác định bởi forgot_password () người dùng gửi biểu mẫu để đặt lại mật khẩu
- Một "reset_password_token" được tạo. Điều này bao gồm ID của người dùng + md5() của mật khẩu hiện tại (được mã hóa được lưu trữ) của người dùng?
- Liên kết được tạo đến địa chỉ mật khẩu đặt lại chứa mã thông báo.
- Liên kết này được gửi qua email đến địa chỉ do người dùng cung cấp.email
- Khi người dùng nhấp vào liên kết đó, họ đi đến tuyến đường (được xác định trong chế độ xem), được đặt lại_password (mã thông báo). Giá trị mã thông báo là một đối số cho tuyến đường này.
- Tuyến đường đánh giá liệu mã thông báo có hợp lệ và không hết hạn hay không.
- Nếu có, tuyến đường này sẽ hiển thị biểu mẫu yêu cầu mật khẩu mới, ResetPasswordForm().
Điều đó có đúng không?
Ngoài ra:
- Nếu trên là chính xác, nó là an toàn để làm cho các thẻ chứa một md5 mới() của mật khẩu hiện tại? Tôi biết nó nên là duy nhất và tốn kém để đảo ngược, nhưng vẫn còn?
- Ngày hết hạn được lưu trữ ở đâu?
Tôi đang bối rối đặc biệt nhất bởi hàm generate_password_reset
data = [str(user.id), md5(user.password)] return _security.reset_serializer.dumps(data)
và
get_token_status(token, 'reset', 'RESET_PASSWORD')
chức năng bên trong reset_password_token_status(token)