Các tính năng của một hoạt động thiết lập lại mật khẩu là gì?
- Nó thay đổi một cái gì đó.
- Có một giá trị mà nó được đặt thành.
- Chỉ một số người được phép làm điều đó (người dùng, quản trị viên hoặc có thể với các quy tắc khác nhau về cách có thể làm như vậy).
Điểm 1 ở đây có nghĩa là bạn không thể sử dụng GET, bạn phải POST một cái gì đó đại diện cho hoạt động thay đổi mật khẩu thành URI đại diện cho tài nguyên xử lý các thay đổi mật khẩu hoặc PUT một cái gì đó thể hiện mật khẩu mới cho URI đại diện cho mật khẩu hoặc đại diện cho một cái gì đó (ví dụ: người dùng) trong đó mật khẩu là một tính năng.
Nói chung, chúng tôi sẽ ĐĂNG, không chỉ vì nó có thể gây khó xử khi PUT một cái gì đó mà sau này chúng tôi không thể NHẬN được và tất nhiên chúng tôi không thể NHẬN mật khẩu.
Do đó, Điểm 2 sẽ là dữ liệu đại diện cho mật khẩu mới, trong những gì được POST.
Điểm 3 có nghĩa là chúng tôi sẽ cần phải ủy quyền cho yêu cầu, điều đó có nghĩa là nếu người dùng là người dùng hiện tại, chúng tôi sẽ cần chứng minh mật khẩu hiện tại cho chúng tôi (mặc dù không nhất thiết phải nhận mật khẩu hiện tại, ví dụ như thử thách dựa trên hàm băm đã được sử dụng để chứng minh kiến thức về nó mà không gửi nó).
Do đó, URI phải là một cái gì đó như <http://example.net/changeCurrentUserPassword>
hoặc <http://example.net/users/joe/changePassword>
.
Chúng tôi có thể quyết định rằng chúng tôi muốn nhận mật khẩu hiện tại trong dữ liệu POST cũng như trong cơ chế ủy quyền chung đang được sử dụng.