🔂Reset Password
1.Tổng quan
Trong bài viết này – chúng ta đang tiếp tục series Registration with Spring Security đang diễn ra với cái nhìn về tính năng cơ bản ‘Quên mật khẩu’ – để người dùng có thể đặt lại password của chính mình một cách an toàn khi họ cần.
2. Yêu cầu thiết lập lại mật khẩu của bạn
Quy trình đặt lại mật khẩu thường bắt đầu khi người dùng nhấp vào một số loại nút ‘đặt lại’ trên trang Đăng nhập. Sau đó, chúng tôi có thể yêu cầu người dùng cung cấp địa chỉ email của họ hoặc thông tin nhận dạng khác. Sau khi xác nhận, chúng tôi có thể tạo mã thông báo và gửi email cho người dùng. Sơ đồ sau đây trực quan hóa quy trình mà chúng ta sẽ triển khai trong bài viết này:
3.Mã thông báo đặt lại mật khẩu
Hãy bắt đầu bằng cách tạo một thực thể PasswordResetToken để sử dụng nó cho việc đặt lại mật khẩu của người dùng:
Khi đặt lại mật khẩu được kích hoạt – một mã thông báo sẽ được tạo và một liên kết đặc biệt có chứa mã thông báo này sẽ được gửi qua email cho người dùng.
Mã thông báo và liên kết sẽ chỉ có hiệu lực trong một khoảng thời gian nhất định (24 giờ trong ví dụ này).
4. forgotPassword.html
Trang đầu tiên trong quá trình này là trang ‘Tôi quên mật khẩu của mình’ - nơi người dùng được nhắc nhập địa chỉ email của họ để quá trình đặt lại thực tế bắt đầu.
Vì vậy - hãy tạo một mật khẩu quên đơn giản.html yêu cầu người dùng cung cấp địa chỉ email:
Bây giờ chúng ta cần liên kết đến trang ‘đặt lại mật khẩu’ mới này từ trang đăng nhập:
5.Khởi tạo PasswordResetToken
Hãy bắt đầu bằng cách tạo PasswordResetToken mới và gửi nó qua email cho người dùng:
Và đây là phương thức createPasswordResetTokenForUser():
Và đây là phương thức constructResetTokenEmail() – dùng để gửi email với reset token:
Lưu ý cách chúng tôi sử dụng một đối tượng đơn giản GenericResponse để thể hiện phản hồi của chúng tôi với khách hàng:
6. Kiểm tra PasswordResetToken
Khi người dùng nhấp vào liên kết trong email của họ user/changePassword:
xác minh rằng mã thông báo là hợp lệ
giới thiệu cho người dùng trang updatePassword, nơi họ có thể nhập mật khẩu mới
Mật khẩu mới và mã thông báo sau đó được chuyển đến user/savePassword:
Người dùng nhận được email có liên kết duy nhất để đặt lại mật khẩu của họ và nhấp vào liên kết:
Và đây là phương thức validatePasswordResetToken():
7. Thay đổi mật khẩu
Tại thời điểm này, người dùng thấy trang Đặt lại mật khẩu đơn giản - trong đó tùy chọn duy nhất có thể là cung cấp mật khẩu mới:
7.1. updatePassword.html
Lưu ý rằng chúng tôi hiển thị mã thông báo đặt lại và chuyển nó dưới dạng tham số POST trong lệnh gọi sau để lưu mật khẩu.
7.2. Lưu mật khẩu
Cuối cùng, khi yêu cầu bài viết trước được gửi - mật khẩu người dùng mới được lưu:
Và đây là phương thức ChangeUserPassword():
và PasswordDto:
8.Tham khảo
Last updated