Как получить имя пользователя Windows, когда личность олицетворяет = "true" в asp.net?
Я создаю приложение asp.net mvc для intranet, доступ к которому у всех в компании должен иметь доступ. Мне нужно запустить сайт, выданный за доступ к базе данных и т.д., Но я хочу знать, кто каждый пользователь.
Когда я смотрю Page.User.Identity.Name
, он пуст. Возможно ли получить имя учетной записи пользователя Windows, даже если сайт работает под управлением?
Edit:
Здесь немного больше информации. У меня есть сайт в IIS 6 с включенным анонимным доступом. Сайт работает под системной учетной записью, имеющей доступ к базе данных (поскольку все сотрудники не имеют доступа к базе данных).
У моего web.config есть <authentication mode="Windows" />
и <identity impersonate="true"/>
Моя цель состоит в том, что пользователям не нужно регистрироваться - тот факт, что они вошли в нашу сеть (и тот факт, что сайт не находится на внешнем IP-адресе) достаточно для проверки подлинности. Я просто хотел бы узнать, кто пользователь, чтобы отслеживать изменения, которые они делают, и т.д.
Ответы
Ответ 1
С <authentication mode="Windows"/>
в вашем приложении и анонимным доступом, включенным в IIS, вы увидите следующие результаты:
System.Environment.UserName: Computer Name
Page.User.Identity.Name: Blank
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name
С <authentication mode="Windows"/>
в вашем приложении и "Анонимный доступ отключен и только" Интегрированная проверка подлинности Windows в IIS "вы увидите следующие результаты:
System.Environment.UserName: ASPNET (user account used to run ASP.NET service)
Page.User.Identity.Name: Domain\ Windows Account Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name\ASPNET
С <authentication mode="Windows"/>
и <identity impersonate ="true"/>
в вашем приложении и "Анонимный доступ отключен и только" Интегрированная проверка подлинности Windows в IIS "вы увидите следующие результаты:
System.Environment.UserName: Windows Account Name
Page.User.Identity.Name: Domain\ Windows Account Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Domain\ Windows Account Name
Ответ 2
попробуй это
System.Security.Principal.WindowsIdentity.GetCurrent().Name
Должен вернуть строку с логином пользователя
Ответ 3
Если эта функциональность не изменилась в рамках MVC, и я не думаю, что она имеет значение, то значение Page.User.Identity.Name должно работать. Похоже, что ваш сайт настроен на анонимную аутентификацию. Если это так, попробуйте отключить его.
Ответ 4
Я просто хотел опубликовать свое исправление, потому что никто больше ничего об этом не говорил.
У меня была такая же проблема, когда я публиковал сайт на сервере, но не на моем локальном компьютере. Все настройки были одинаковыми. Однако в IIS "Веб-сайт по умолчанию" никогда не отключался. Он работал и перехватывал трафик, хотя с ним не было связано ни одного сайта. По умолчанию анонимная аутентификация была включена, но отключена на моем веб-сайте, работающем под портом 80. Похоже, не имеет значения, что на моем сайте он был отключен..., поскольку по умолчанию он был включен, он был включен для всего трафика в порт 80.
Отключение веб-страницы по умолчанию устранило проблему. Также смена порта на 8080 работает.
Я надеюсь, что это помогает кому-то.