2013-03-25 27 views

Trả lời

7

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.

1

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).

+2

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 –

+0

@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_. –

1

@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.

Các vấn đề liên quan