Будет ли когда-либо отсутствовать доменное имя в HttpContext.Current.User.Identity? - PullRequest
1 голос
/ 16 февраля 2012

Я работаю над простым одностраничным сайтом ASP.Net, который используется внутри компании ограниченным числом пользователей.

В нем я использую HttpContext.Current.User.Identity, чтобы получить имя зарегистрированного пользователя в формате Domain \ ActiveDirectoryUserName и извлекать доменное имя, как предлагается ответом в этом посте: Встроенный помощник для анализа User.Identity.Name в Домене \ Имя пользователя и отображения его в метке вроде Hello xyz

Будет ли когда-нибудь сценарий, когда доменное имя не будет присутствовать в HttpContext.Current.User.Identity?


ОБНОВЛЕНИЕ: Этот сайт использует проверку подлинности Windows

1 Ответ

4 голосов
/ 16 февраля 2012

Во-первых, если пользователь анонимный, вы получите пустую строку для идентификатора пользователя.

Во-вторых, при использовании источника аутентификации, который поддерживает домены, присутствует только домен.Если вы используете встроенную проверку подлинности Windows под IIS, домен всегда будет присутствовать в каждом неанонимном идентификаторе пользователя.Если вы используете проверку подлинности с помощью форм или другой источник проверки подлинности, поставщик полностью контролирует формат удостоверения пользователя.


Поскольку вы указали, что используете встроенную проверку подлинности Windows, вывсегда иметь домен при условии, что пользователь аутентифицирован.Если вы разрешаете анонимный доступ, вам следует сначала проверить HttpContext.Current.User.IsAuthenticated, прежде чем пытаться проанализировать их имя.

...