Почему HttpContext.Current.User.Identity.Name возвращает пустое значение - PullRequest
10 голосов
/ 20 октября 2011

Я создал сайт.Это внутренний сайт.Это сайт .NET 4.0.Я хотел бы получить имя пользователя, используя HttpContext.Current.User.Identity.Name человека, просматривающего сайт.Страница входа не существует, поскольку она является внутренней.Я не уверен, что мне не хватает.Нужно ли мне в веб-конфигурации следующее:

<authentication mode="Windows"></authentication>
<identity impersonate="true"/>
<authorization>
  <allow users="?"/>
</authorization>

и это:

  <system.webServer>
  <validation validateIntegratedModeConfiguration="false" />

Ответы [ 5 ]

15 голосов
/ 20 октября 2011

При неаутентификации он выдается пустым.Вы также можете проверить это, выполнив:

HttpContext.Current.User.Identity.IsAuthenticated

Проверьте уровень проверки подлинности в IIS, он также настроен для включения проверки подлинности Windows?

9 голосов
/ 20 октября 2011

В iis отключите анонимный доступ и включите встроенную безопасность Windows для вашего веб-приложения.

4 голосов
/ 20 октября 2011

Да, вам нужно, по крайней мере,

<authentication mode="Windows"></authentication>

часть требуется, если вы используете встроенную аутентификацию Windows.

После этого вы сможете получить имя пользователя, вошедшего в систему.

Нет, вам не нужно:

<validation validateIntegratedModeConfiguration="false" />
2 голосов
/ 10 мая 2014

В IIS перейдите на Сайты \ Веб-сайт по умолчанию \ [Ваш веб-сайт].

Выберите опцию Аутентификация и отключите анонимную аутентификацию.

1 голос
/ 27 февраля 2017

В моем случае помогает удаление строки <remove name="FormsAuthentication" /> из web.config.

У меня также есть <authentication mode="Forms" /> в <system.web> разделе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...