2010-02-04 77 views
40

Mô tả mẫu mã MSDN: Ví dụ mã sau sử dụng thuộc tính IsAuthenticated để xác định xem yêu cầu hiện tại đã được xác thực chưa. Nếu nó chưa được xác thực, yêu cầu được chuyển hướng đến một trang khác nơi người dùng có thể nhập thông tin đăng nhập của họ vào ứng dụng Web. Đây là một kỹ thuật phổ biến được sử dụng trong trang mặc định cho một ứng dụng.Công việc Request.IsAuthenticated hoạt động như thế nào?

Điều này thật tuyệt vời nhưng không có chi tiết hoặc bất cứ điều gì ...

Chính xác là nó kiểm tra? Làm thế nào để tôi đặt nó thành true?

Đi thêm dặm: Tôi sẽ tìm tài liệu chi tiết hơn về vấn đề này ở đâu?

Trả lời

52

Nhờ Google, tôi tìm thấy phiên bản được lưu trong bộ nhớ cache của bài đăng @keyboardP đề cập đến trong his answer. Tôi đang đăng câu trả lời/đăng ở đây làm tài liệu tham khảo cho người khác vì liên kết ban đầu bị hỏng (2012-12-06).

Original question rằng câu trả lời dưới đây đề cập đến:

Tôi có một hình thức dựa trên ứng dụng đó là đem lại cho tôi phù hợp. Tôi nhận thấy rằng, trong một vị trí mà thuộc tính IsAuthenticated là True, bây giờ là sai và không hoạt động như mong đợi. Tôi tự hỏi nếu tôi có một thiết lập không hợp lệ ??

bất cứ ai có thể cho tôi biết những gì thiết đặt thuộc tính IsAuthenticated True - những gì constitues đăng nhập

trả lời bởi Daniel Kent:.

Request.IsAuthenticated không chỉ dành cho hình thức authentciation - đó là hợp lệ bất kể loại xác thực nào đang được sử dụng (Windows, Hộ chiếu, Biểu mẫu hoặc sơ đồ tùy chỉnh của riêng chúng tôi)

HttpRequest.IsAuthenticated sẽ đúng khi sử dụng r đưa ra yêu cầu đã được xác thực. Về cơ bản, tài sản này cung cấp thông tin giống như Context.User.Identity.IsAuthenticated.

Khi bắt đầu yêu cầu, Context.User.Idenity chứa GenericIdentity bằng tên người dùng không có.Thuộc tính IsAuthenticated cho đối tượng này sẽ trả lại false vì vậy Request.IsAuthenticated sẽ là false. Khi một module xác thực xử lý các sự kiện Application_AuthenticateRequest và successfuly xác thực người sử dụng nó thay thế GenericIdentity trong Context.User.Identity với một IIdentity đối tượng mới đó sẽ trở lại true từ tài sản IsAuthenticated của nó. Request.IsAuthenticated sau đó sẽ trả lại true.

Trong trường hợp Xác thực biểu mẫu, mô-đun xác thực biểu mẫu sử dụng vé xác thực được mã hóa có trong cookie xác thực để xác thực người dùng. Khi đã thực hiện điều này, nó sẽ thay thế GenericIdentity trong Context.User.Identity với đối tượng FormsIdentity mà trả lại True từ thuộc tính IsAuthenticated của nó.

Vì vậy, việc thiết IsAuthenticated để true thực sự là khác nhau để đăng nhập. Như Jeff nói, cách đăng nhập vào hình thức xác thực xảy ra khi vé xác thực được tạo ra và gửi cho khách hàng như một cookie. (RedirectFromLoginPage hoặc SetAuthCookie) Những gì chúng tôi đang nói về với IsAuthenticated là xác thực xảy ra với mỗi yêu cầu trang. Đăng nhập xảy ra khi người dùng nhập thông tin đăng nhập của họ và được cấp một vé , xác thực xảy ra với mỗi yêu cầu.

+0

đây là liên kết đến câu trả lời được lưu trong bộ nhớ cache của google: https://webcache.googleusercontent.com/search?q=cache:t4JNfp8peQIJ:https://forums.asp.net/t/1416811.aspx%3FQuestion%2Babout%2Bmethods% 2Bto% 2Betet% 2Bif% 2Ba% 2Buser% 2Bis% 2Blogged% 2Bin – tylerlindell

8

Có một bài đăng khá chi tiết của Daniel Kent here. (Snippet)

Request.IsAuthenticated là không chỉ cho các hình thức authentciation - nó là hợp lệ không có vấn đề gì loại xác thực đang được sử dụng (Windows, Hộ chiếu, hình thức hoặc chương trình tùy chỉnh riêng của chúng tôi)

HttpRequest.IsAuthenticated sẽ là đúng khi người dùng thực hiện yêu cầu đã được xác thực. Về cơ bản, thuộc tính này cung cấp thông tin giống như Ngữ cảnh.User.Identity.IsAuthenticated.

+4

Liên kết không may bị hỏng. Tôi đã tìm thấy phiên bản được lưu trong bộ nhớ cache thông qua Google và đăng nội dung của nó bằng một câu trả lời khác để định dạng tốt hơn. – Oliver

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