Как да получите текущо потребителско име за влизане в Windows в MVC4 с .net Framework4.0

Опитвах се да получа текущото потребителско име на Windows, но накрая НЕ. По-долу са начините, които опитах, но не можах да получа потребителското име, получавам празна стойност

  1. STEP Опитах с

    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. СТЪПКА: Хоствах в моя сървър за разработка и направих проверка на Anonymous Authenticate = Disable и Windows Authentication = Enable

  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 и да стартира вашия уеб сайт автоматично, без да изисква повторно потребителско име/парола.

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

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 : Току-що поставих точка на прекъсване и преместих курсора си върху самоличността и току-що го разширих чрез щракване + маркиране, там мога да видя тип удостоверяване = и е удостоверено = фалшиво и име= - 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.. ‹appSettings› ‹add key=EnableSimpleMembership value=false /› ‹/appSettings› - person user3794063; 29.08.2016