2016-01-11 10 views
1

Я пытаюсь получить текущий пользователь окна в новом ASP.Net 5.Как получить текущего пользователя Windows на ASP.Net 5?

Это возвращает правильно при запуске из Visual Studio, когда я развернуть его на сервер возвращает идентификатор пула приложений:

string name = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 

Это возвращает пустую строку:

string name = System.Threading.Thread.CurrentPrincipal.Identity.Name; 

Это были сняты в BEW версии ASP:

HttpContext.Current.User.Identity 

Любая помощь очень ценится.

ответ

1

Вы не указано, где вы хотите, чтобы получить эту информацию, но внутри контроллера он доступен в User.Identity.Name:

public IActionResult Index() 
{ 
    ViewData["Message"] = $"Hello, {User.Identity.Name}"; 
    return View(); 
} 

Это приводит к «Hello, настольных ПК \ User». Вы также можете сделать это в представлении.

+0

Спасибо, это работает – Whistler

0

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

Вы можете либо добавить <identity impersonate="true" /> в web.config, либо вы можете избежать прямого редактирования web.config с помощью диспетчера IIS; выберите свой веб-сайт, нажмите «Аутентификация» и включите олицетворение ASP.NET.

+0

Web.config не существует в ASP.Net 5, и я не вижу опции олицетворения в диспетчере IIS – Whistler

1

Что такое режим аутентификации, который вы используете?

Если следующие параметры

  • Authentication Mode = Windows,
  • Олицетворение в приложении
  • Анонимный доступ отключен на веб-сайте IIS

Тогда ваш код ниже должен дать "имя", как domain \ WinAccount Название

string name = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
+0

Howe я устанавливаю олицетворение в ASP.Net 5? – Whistler

Смежные вопросы