Как получить текущее имя пользователя Windows в MVC4 с .net Framework4.0

Я пытался получить текущее имя пользователя Windows, но, наконец, НЕТ. Ниже приведены способы, которые я пробовал, но не смог получить имя пользователя. Я получаю пустое значение.

  1. ШАГ Я пытался с

    string usr System.Web.HttpContext.Current.User.Identity.Name;
    

    Получил пустое значение

  2. ШАГ Проверено в моем локальном ISS в разделе «Безопасность и включенная проверка подлинности Windows».

  3. ШАГ в моем проекте. Я установил переключатель, чтобы использовать сервер разработки «Использовать Visual Studio».

  4. STEP в моем web.config файле я выбрал Form=Windows

    <authentication mode="Windows">
        <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    
  5. ШАГ: Я также пытался с авторизацией

    <authentication mode="Windows" >
        <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
    
  6. ШАГ: я разместил на своем сервере разработки и проверил анонимную аутентификацию = отключить и аутентификацию Windows = включить

  7. ШАГ: авторизация (я использовал это поверх контроллера)

    string str = System.Web.HttpContext.Current.User.Identity.Name 
    

    но получил пустое значение

Я пробовал все эти способы получить текущее имя пользователя, но получаю пустое значение. Я пытаюсь получить его под контроллером. Есть ли способ получить это? Пожалуйста посоветуй.


person user3794063    schedule 26.08.2016    source источник
comment
Но вы можете войти на свой сайт через аутентификацию Windows, верно?   -  person Hackerman    schedule 26.08.2016
comment
да, я могу, но из-за этого MVC у меня возникают проблемы с моим проектом   -  person user3794063    schedule 26.08.2016


Ответы (1)


Установите это в web.config:

<configuration>
    ....
    <system.web>
    <authentication mode="Windows" />
        ....
    </system.web>
</configuration>        

Это позволило аутентификации Windows получить ваше имя пользователя Windows.

Далее, если вы используете Internet Explorer, вам нужно добавить "http://localhost" в список допустимых внутренние сайты (в IE Internet Options > Security > Local Intranet > Sites > Advanced, а затем добавьте http://localhost в этот список). Это позволяет IE подобрать текущего пользователя Windows и запустить ваш веб-сайт автоматически, без повторного запроса имени пользователя/пароля.

В вашем методе HomeController Index:

public ActionResult Index()
{
    // get the currently logged on Windows user
    ViewBag.UserName = HttpContext.User.Identity.Name;
    return View();
}

а затем, на ваш взгляд:

<h3>Hello, @ViewBag.UserName !</h3>

Вот и все !

person marc_s    schedule 26.08.2016
comment
Отличный ответ! - person Hackerman; 26.08.2016
comment
@marc_s: я просто поставил точку останова и переместил курсор на удостоверение личности и просто расширил его, щелкнув + пометка, там я вижу Тип аутентификации = и Аутентифицировано = false и имя = - person user3794063; 26.08.2016
comment
@marc_s: кое-где я помню, что тип аутентификации должен быть NTLM, тогда только я смогу получить имя пользователя ... не уверен, хотя - person user3794063; 26.08.2016
comment
@marc_s есть идеи?? - person user3794063; 26.08.2016
comment
Нет, как я уже сказал, это работает, если ваша машина является членом домена Windows — я только что проверил это на своей машине. Не уверен, почему это не работает для вас - я подозреваю, что ваш веб-сайт не настроен должным образом для принятия аутентификации Windows .... - person marc_s; 26.08.2016
comment
@marc_s: я только что создал образец приложения ASP.net, и там я могу получить свое имя пользователя, если использую этот приведенный ниже код, но почему он не работает в MVC4? строка s = System.Web.HttpContext.Current.User.Identity.Name; - person user3794063; 29.08.2016
comment
Урааааааа... наконец-то я нашел решение...!!!!!!!!!!!! Вот. Только что добавил строку ниже в настройки приложения в файле web.config. - person user3794063; 29.08.2016