захватить имя пользователя windows в asp.net mvc request - PullRequest
8 голосов
/ 25 января 2010

У меня есть интранет-приложение asp.net mvc site. есть ли в любом случае захватить Windows NT логин от пользователя без полной системы входа в систему на сайте. я не хочу разрешать, но я хотел бы сделать некоторые регистрации на сервере для отслеживания запросов и т. д. .

Ответы [ 6 ]

13 голосов
/ 25 января 2010

Вы можете использовать HttpContext.Current.User.Identity.Name, если вы настроили сайт для использования Аутентификация Windows . Многие браузеры передают имя пользователя прозрачно.

2 голосов
/ 31 мая 2013

Перейдите к файлу Web.Config для вашего приложения (убедитесь, что он является основным, а не к Web.Config в представлении), отметьте <authentication mode="Forms">, если вы его видите, затем добавьте такие строки:

<authentication mode="Windows"/>
<identity impersonate="true"/>
<authorization>
  <allow roles="DOMAIN\PersonnelGroup" />
  <allow users="DOMAIN\jdoe"/>
  <deny users="*"/>
</authorization>

Вам не обязательно включать раздел <authorization>, но это полезно, если вы хотите разрешить доступ для определенных групп и пользователей и запретить всем остальным. Когда вы используете IE, учетные данные передаются автоматически. Вы можете проверить это, напечатав имя пользователя на ваш взгляд:

@HttpContext.Current.User.Identity.Name

Если вы откроете свой сайт с помощью Firefox или любого другого браузера, кроме IE, он запросит у вас имя пользователя и пароль, поскольку он не передает автоматически учетные данные (хотя, очевидно, вы можете заставить Firefox передавать учетные данные, как Dan Diplo). упоминает выше).

Если вы хотите передать эти учетные данные на другой сервер, такой как SQLServer, из моего опыта становится больше головной боли, потому что вы столкнулись с проблемой двойного прыжка. Единственный известный мне обходной путь - разместить IIS и SqlServer на одном сервере или иметь логин для вашей интрасети, чтобы у вас было имя пользователя и пароль для передачи в SQLServer.

1 голос
/ 28 марта 2018

попробуйте это.

 var user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

возвращает Domail / пользователя

Не забудьте поместить это в web.Config

<identity impersonate="true"/> 
1 голос
/ 25 января 2010

В какой версии Windows работает это приложение mvc?

Вы можете попробовать следующее:

  • Используйте IIS Manager, чтобы отключить анонимный доступ к сайту, и убедитесь, что дайджест и / или проверка подлинности Windows включена.
  • Измените web.config приложения mvc для использования аутентификации Windows
  • Доступ к имени входа в контроллере с помощью User.Identity.Name.

Будет ли это делать?

0 голосов
/ 21 января 2014

Вы можете попытаться получить имя пользователя с помощью следующего фрагмента кода:

var userName = HttpContext.User.Identity.Name;

User.Identity заполняется автоматически, если вы используете какую-либо аутентификацию (например, на основе cookie и т. Д.)

0 голосов
/ 25 января 2010

Если вы настроили IIS для использования проверки подлинности Windows и сайт находится в зоне интрасети для ваших клиентов, то вход в систему будет происходить автоматически без каких-либо запросов.

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