2010-02-02 5 views
8

Sự khác nhau (đằng sau hậu trường) giữa Page.User.Identity và Request.LogonUserIdentity là gì? Không phải sự khác biệt về loại, tên, v.v ... nhưng sự khác biệt về cách chúng được triển khai phía sau hậu trường (tức là một lệnh gọi đến windows xxx api và các lệnh gọi khác là asp.net xxx api ...).Sự khác biệt giữa Page.User.Identity vs Request.LogonUserIdentity

+0

Bạn dường như đã trả lời câu hỏi của riêng bạn. Có bất cứ điều gì specfic bạn đang tìm kiếm? LogonUserIdentity trả về đối tượng WindowsIdentity cho người dùng đã đăng nhập hiện tại. – sarvesh

Trả lời

18

Tùy thuộc vào cơ chế bạn đang sử dụng để xác thực người dùng và cài đặt nào bạn có cho mạo danh.

Ví dụ, dưới máy chủ phát triển VS, sử dụng hình thức xác thực, các nhà cung cấp thành viên SQL chuẩn và đoạn mã sau:

// m_LoggedIn is a Literal control on the page: 
m_LoggedIn.Text = string.Format("<br />Page.User.Identity: {0} " + 
           "<br />Request.LogonUserIdentity: {1}", 
           Page.User.Identity.Name, 
           Request.LogonUserIdentity.Name); 

tôi nhận được kết quả như sau:

Page.User. sắc: zhaph

Request.LogonUserIdentity: [ComputerName] \ Bến

Dòng đầu tiên (Page.User.Identity) là tài khoản xác thực biểu mẫu mà tôi đã đăng nhập vào trang web, dòng thứ hai là nhận dạng cửa sổ mà yêu cầu đang chạy dưới - vì tôi đã không cho phép mạo danh, đây là cửa sổ đăng nhập vì đó là tài khoản máy chủ web đang chạy dưới.

Về mặt của API, HttpRequest.LogonUserIdentity được gọi vào lớp WindowsIdentity, mà sẽ luôn luôn đại diện cho một tài khoản người dùng của Windows, trong khi Page.User đang tạo ra một đối tượng mà thực hiện IPrinciple, cho phép bạn để đại diện cho một người dùng sử dụng một số các cửa hàng sao lưu khác nhau - ví dụ cấu trúc cơ sở dữ liệu SQL được cung cấp bởi MembershipProvider.