Người dùng chưa được xác thực
Chúng tôi thực hiện PUT
yêu cầu trên một api/v1/account/password
điểm cuối và yêu cầu một tham số với email tài khoản tương ứng để xác định tài khoản mà người dùng muốn đặt lại (cập nhật) mật khẩu:
PUT : /api/v1/account/password?email={email@example.com}
Lưu ý: Như @DougDomeny đã đề cập trong nhận xét của mình, việc chuyển email dưới dạng chuỗi truy vấn trong url là một rủi ro bảo mật. Các tham số GET không được tiết lộ khi sử dụng https
(và bạn nên luôn sử dụng https
kết nối thích hợp cho các yêu cầu như vậy) nhưng có những rủi ro bảo mật khác liên quan. Bạn có thể đọc thêm về chủ đề này trong bài đăng trên blog này ở đây .
Chuyển email trong phần thân yêu cầu sẽ là một giải pháp thay thế an toàn hơn so với việc chuyển nó dưới dạng tham số GET:
PUT : /api/v1/account/password
Nội dung yêu cầu:
{
"email": "email@example.com"
}
Phản hồi có nghĩa là phản hồi 202
được chấp nhận :
Yêu cầu đã được chấp nhận để xử lý, nhưng quá trình xử lý vẫn chưa hoàn tất. Yêu cầu cuối cùng có thể được thực hiện hoặc không, vì nó có thể không được phép khi quá trình xử lý thực sự diễn ra. Không có cơ sở nào để gửi lại mã trạng thái từ một hoạt động không đồng bộ như thao tác này.
Người dùng sẽ nhận được email tại email@example.com
và việc xử lý yêu cầu cập nhật phụ thuộc vào các hành động được thực hiện với liên kết từ email.
https://example.com/password-reset?token=1234567890
Việc mở liên kết từ email này sẽ chuyển hướng đến biểu mẫu đặt lại mật khẩu trên ứng dụng giao diện người dùng sử dụng mã thông báo đặt lại mật khẩu từ liên kết làm đầu vào cho trường nhập ẩn (mã thông báo là một phần của liên kết dưới dạng chuỗi truy vấn). Một trường nhập khác cho phép người dùng đặt mật khẩu mới. Đầu vào thứ hai để xác nhận mật khẩu mới sẽ được sử dụng để xác thực trên giao diện người dùng (để tránh lỗi chính tả).
Lưu ý: Trong email, chúng tôi cũng có thể đề cập rằng trong trường hợp người dùng không khởi tạo bất kỳ thiết lập lại mật khẩu nào, họ có thể bỏ qua email và tiếp tục sử dụng ứng dụng bình thường với mật khẩu hiện tại của mình
Khi biểu mẫu được gửi với mật khẩu mới và mã thông báo làm đầu vào, quá trình đặt lại mật khẩu sẽ diễn ra. Dữ liệu biểu mẫu sẽ được gửi lại cùng với một PUT
yêu cầu nhưng lần này bao gồm cả mã thông báo và chúng tôi sẽ thay thế mật khẩu tài nguyên bằng một giá trị mới:
PUT : /api/v1/account/password
Nội dung yêu cầu:
{
"token":"1234567890",
"new":"password"
}
Phản hồi sẽ là phản hồi 204
không có nội dung
Máy chủ đã hoàn thành yêu cầu nhưng không cần trả lại phần thân thực thể và có thể muốn trả về thông tin cập nhật. Phản hồi CÓ THỂ bao gồm siêu thông tin mới hoặc cập nhật ở dạng tiêu đề thực thể, nếu có thì NÊN được liên kết với biến thể được yêu cầu.
Người dùng xác thực
Đối với những người dùng đã xác thực muốn thay đổi mật khẩu của họ, PUT
yêu cầu có thể được thực hiện ngay lập tức mà không cần email (tài khoản mà chúng tôi đang cập nhật mật khẩu được máy chủ biết). Trong trường hợp đó, biểu mẫu sẽ gửi hai trường:
PUT : /api/v1/account/password
Nội dung yêu cầu:
{
"old":"password",
"new":"password"
}