Tôi nên trả lời mã trạng thái HTTP nào sau khi xác thực người dùng và sau đó phát hiện ra rằng họ chưa kích hoạt tài khoản của họ sau khi đăng ký?Mã trạng thái HTTP nào cho tài khoản không được kích hoạt?
Trả lời
401 có nghĩa là người dùng không xác định (không được xác thực ở tất cả hoặc được xác thực không chính xác, ví dụ: thông tin đăng nhập không hợp lệ).
403 có nghĩa là người dùng được biết nhưng không được ủy quyền (tức là không có vai trò/nhóm phù hợp).
Bạn cũng có thể diễn giải tài khoản đã đăng ký nhưng bị vô hiệu hóa với tư cách người dùng có vai trò cụ thể như "KHÔNG HOẠT ĐỘNG" và/hoặc thiếu vai trò phù hợp. 403 là phù hợp hơn trong trường hợp cụ thể của bạn.
Nếu bạn cho rằng tài khoản chưa được kích hoạt không được ủy quyền, thì câu trả lời chắc chắn phải có mã trạng thái 401 Unauthorized.
Tôi nghĩ rằng 403 Forbidden cũng sẽ phù hợp, có. Tuy nhiên trong trường hợp của bạn, tôi nghĩ rằng 401 trái phép là thích hợp hơn.
This answer tóm tắt hai khá tốt, trích dẫn này cho 401 Unauthorized:
Nếu yêu cầu đã bao gồm chứng ủy quyền, sau đó phản ứng 401 chỉ cho phép đó đã bị từ chối đối với những thông tin quan trọng.
Điều đó chắc chắn áp dụng, vì trường hợp của bạn cho thấy họ đã cung cấp thông tin đăng nhập nhưng các thông tin đăng nhập đó không hợp lệ vì tài khoản chưa được kích hoạt (bạn cho là trái phép).
@Josh Davenport: Bạn đã mô tả ủy quyền và xác thực ở vị trí của nhau: xác thực là kiểm tra bằng chứng xác thực, ủy quyền là gán vai trò/nhóm.
Mặt khác, như bạn đã nêu trong nhận xét cho chính mình, 401 giả định cả xác thực và ủy quyền không thành công trong một lần. Người dùng cần phải thất bại cả hai để có được 401. 403 được sử dụng trong trường hợp dữ liệu bị cấm hoàn toàn và việc xác thực không được thực hiện/cần thiết.
Tương tự: 401 = điểm kiểm tra nơi thông tin đăng nhập được chọn. 403 = DỪNG dấu, không thể nhập.
Để trả lời câu hỏi về OP: 401 là mã trạng thái cho tài khoản chưa kích hoạt, NHƯNG vì nó yêu cầu triển khai HTTP-Auth, 403 có thể được sử dụng thay cho nó, nếu bạn xác thực và ủy quyền bằng các phương tiện khác. Cá nhân tôi vẫn sẽ gắn bó với 401, vì các tiêu chuẩn không nhất thiết bao gồm tất cả các tình huống thực tế. Ngày nay hầu như không ai sử dụng HTTP-Auth cho mục đích xác thực.
- 1. Mã trạng thái HTTP cho lỗi chung
- 2. Mã trạng thái HTTP cho dữ liệu không hợp lệ
- 3. Mã trạng thái HTTP System.Net.WebException
- 4. Mã trạng thái HTTP cho chuyển hướng ngôn ngữ
- 5. Http Mã trạng thái 400 và 412
- 6. Mã trạng thái HTTP cho bộ sưu tập hạn chế?
- 7. Mã trạng thái HTTP đang được xử lý?
- 8. Tại sao ColorAnimation cho trạng thái được kiểm tra không bền màu sau khi trạng thái MouseOver được kích hoạt?
- 9. Nhận mô tả cho mã trạng thái HTTP
- 10. Đặt mã trạng thái HTTP trong Chai?
- 11. Mã trạng thái Http với libcurl?
- 12. Mã trạng thái HTTP 000 là gì?
- 13. Trạng thái 'bị khóa' của tài khoản trong SQL Server
- 14. Mã trạng thái http thích hợp để cho biết trình duyệt không được hỗ trợ?
- 15. Trả lại mã trạng thái HTTP 201 trong bình
- 16. Webpy: cách đặt mã trạng thái http thành 300
- 17. Thỏa thuận với mã trạng thái HTTP 308 là gì?
- 18. Khi cập nhật tài nguyên, mã trạng thái HTTP nào được trả lại khi cập nhật thành công?
- 19. Kiểm tra mã trạng thái HTTP trong Selenium
- 20. Phân tích cú pháp mã trạng thái HTTP
- 21. Nhận mã trạng thái HTTP bằng Selenium WebDriver C#
- 22. Nhận mã trạng thái HTTP trong Android WebView
- 23. Chụp mã trạng thái http bằng con nhện bị lột
- 24. Không thể xóa liên hệ cuối cùng - Mã trạng thái Http nào?
- 25. Mã trạng thái HTTP cho các trang tạm thời không có sẵn
- 26. Cách nhận mã trạng thái HTTP <img> thẻ
- 27. Mã trạng thái HTTP có được coi là "số ma thuật" không?
- 28. Xác định trạng thái kích hoạt trạng thái thạch anh bị tạm dừng?
- 29. Tại sao display_errors thay đổi mã trạng thái HTTP?
- 30. Mã trạng thái HTTP nào để sử dụng cho các thông số bắt buộc không được cung cấp?
Câu trả lời trước đây của bạn, 403 Cấm, có phù hợp hơn không? Vì 401 giả định người dùng đã nhập sai thông tin đăng nhập ... mà họ chưa nhập. P.S. bạn có một trang web tốt đẹp –
@JohnathanAu Có lẽ. Tuy nhiên, tôi không nghĩ rằng 401 giả định rằng thông tin đăng nhập nhất thiết phải là _wrong_, chỉ cần _unauthorized_. –