2011-08-15 31 views

Trả lời

4

Tiêu đề mà máy chủ gửi là mã trạng thái bị từ chối 200 OK hoặc 401 khi thành công hay thất bại.

Xem http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html Mục 10.4.2 401 Không được phép cho việc này.

Khi gửi 401, máy chủ phải gửi một

WWW-Authenticate = "WWW-Authenticate" ":" 1 # thách thức

để chỉ ra những gì chương trình nên được sử dụng để xác thực.

Xem http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html Mục 14.47 WWW-Authenticate cho việc này.

1

Chỉ có HTTP/1.0 401 Unauthorized.

Nhưng gần đây tôi đã phát triển "mẫu xác thực" này: Lần đầu tiên bạn truy cập trang bạn nhận được 401 và màn hình đăng nhập. Ngay sau khi bạn nhập dữ liệu đăng nhập chính xác, bạn nhận được 200. Khi phiên của bạn hết hạn hoặc bạn nhấp vào đăng xuất, bạn sẽ nhận được 401 và màn hình đăng nhập lại. Màn hình đăng nhập luôn là 401, mọi trang khác 200.

1

Tùy thuộc vào ý nghĩa của bạn bằng cách 'đăng nhập' và có lẽ cả cách đăng nhập/đăng xuất/ủy quyền được xử lý bởi máy chủ.

Thông thường, cụm từ 'để đăng nhập' có liên quan đến phiên. Một 'đăng nhập', làm những gì cần phải được thực hiện, và sau đó 'đăng xuất'. Máy chủ lưu trữ thông tin phiên và gửi ID phiên trong một cooki cho máy khách, người sau đó gửi cookie trở lại để thông báo cho máy chủ biết rằng phiên đang diễn ra. Trong các biến phiên có thể thay đổi và trạng thái của chúng liên tục giữa các cuộc gọi từ máy khách.

Trực giác, nghe có vẻ tự nhiên là phải có loại phản hồi 'Được ủy quyền' khi bạn bắt đầu phiên, cùng với câu trả lời 'Không được phép (401)'.

Tuy nhiên, HTTP là giao thức không nhà nước. Nó không biết về các tiểu bang, chỉ về việc liệu yêu cầu có được phép hay không. Đó là lý do tại sao có trạng thái 401 nhưng không có mã trạng thái 'được ủy quyền' cụ thể (vì nếu yêu cầu không trái phép, nó được ủy quyền ngầm).

Để có cảm giác làm việc trên một phiên ở cấp HTTP (không sử dụng công trình như session_start của PHP()) thông tin đăng nhập ủy quyền phải được gửi cùng với mọi yêu cầu. Đây là những gì xảy ra khi người ta sử dụng tập tin .htaccess để bảo vệ một thư mục, ví dụ. Sau khi cung cấp cho hộp thoại mật khẩu tên người dùng và mật khẩu, chúng được gửi sau mỗi lần có quyền truy cập trong phạm vi ủy quyền. Có một ảo tưởng về một 'phiên' đang diễn ra nhưng trên thực tế tên người dùng và mật khẩu được gửi theo mọi yêu cầu.

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