Различия между Page.User.Identity и Request.LogonUserIdentity - PullRequest
9 голосов
/ 02 февраля 2010

Каковы различия (за кадром) между Page.User.Identity и Request.LogonUserIdentity?Не различия в типе, имени и т. Д., Но различия в том, как они реализованы за кулисами (то есть один вызывает windows xxx api, а другой вызывает asp.net xxx api ...).

1 Ответ

19 голосов
/ 03 февраля 2010

Это зависит от того, какой механизм вы используете для аутентификации пользователей, и какие настройки вы используете для олицетворения.

Например, на сервере разработки VS с использованием проверки подлинности с помощью форм, стандартного поставщика членства SQL и следующего кода:

// 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);

Я получаю следующий вывод:

Page.User.Identity: zhaph

Request.LogonUserIdentity: [имя_компьютера] \ Ben

Первая строка (Page.User.Identity) - это учетная запись для проверки подлинности с помощью форм, с которой я вошел на сайт, вторая строка - это идентификатор Windows, под которым выполняется запрос - поскольку я не включил олицетворение, это мой вход в Windows, так как это учетная запись, под которой работает веб-сервер.

С точки зрения API, HttpRequest.LogonUserIdentity вызывает класс WindowsIdentity, который всегда будет представлять учетную запись пользователя Windows , тогда как Page.User создает объект, который реализует IPrinciple, который позволяет вам представлять пользователя с помощью нескольких различных хранилищ резервных копий - например, структуры базы данных SQL, предоставляемой MembershipProvider.

...