2016-07-06 19 views
6

Ich habe eine Intranetsite in MVC6 mit ASP.NET Core RC2 erstellt. Ich möchte den Windows-Benutzernamen der Person abrufen, die auf die Intranetsite zugreift.So erhalten Sie den aktuellen Windows-Benutzer mit ASP.NET Core RC2 MVC6 und IIS7

Wenn also Jim zur Intranet-Site geht, möchte ich, dass die Site "Domain \ Jim" erhält, während Anne, wenn sie zur Intranetsite geht, die Site "Domain \ Anne" erhalten soll.

Nur die Windows-Authentifizierung ist auf meinem IIS-Server aktiviert, die anonyme Authentifizierung ist deaktiviert.

Meine Website ist so eingerichtet, dass sie die Windows-Authentifizierung verwendet und die anonyme Authentifizierung deaktiviert.

<system.web> 
    <authentication mode="Windows" /> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 
</system.web> 

Durch Debug kann ich System.Security.Principal.WindowsIdentity.GetCurrent().Name verwenden, aber das natürlich gibt "IIS AppPool \ AltraSocial" auf dem IIS-Server.

Ich habe viele Beispiele aus älterer Version von ASP.NET mit HttpContext gefunden, und ich habe versucht, das in meine Steuerung mit den folgenden zu injizieren, aber userName endet mit null.

Wie ist der richtige Weg, den Windows-Benutzernamen an eine Intranetsite in ASP.NET Core RC2 MVC6 zu übergeben?

+0

Haben Sie den anonymen Zugriff auf Ihre Website deaktiviert? – DavidG

+0

Ja. Ich habe es mit dem folgenden innerhalb deaktiviert. ich meine Frage mit dem Block aktualisiert haben. – Kyle

+0

Haben Sie eine Authentifizierungs-Middleware registriert? – DavidG

Antwort

2

Für alle anderen, die Windows-Authentifizierung in einer Intranet-App verwenden, die nur Informationen über einen Benutzer abrufen möchten, ist es einfacher, dass Sie vielleicht denken.

In Ihrem Controller wird diese Zeile den Benutzernamen des aktuellen Benutzers in DOMÄNE \ Benutzername Formular abrufen.

var userId = this.User.Identity.Name; 

ich einige Zeit damit verbracht durch die anderen Antworten zu suchen, bevor die meisten von ihnen zu merken, dass ich angenommen Einzelnen Konten wurde die Umsetzung gegen AD authentifiziert werden, nicht aus der Box Windows-Authentifizierung.

0

Mit var userId = this.User.Identity.Name; arbeitete für mich. Meine App läuft in einem Intranet und alles, was ich tun wollte, ist die Benutzer-Login-ID von Windows. Ich musste die Informationen des Benutzers nicht speichern, da diese bereits in Active Directory gespeichert sind.