Wie der aktuelle Windows-Benutzer mit ASP.NET Core RC2 MVC6 und IIS7

Ich habe eine intranet-Seite gebaut, in MVC6 mit ASP.NET Core RC2. Ich möchte den Windows-Benutzernamen der person, die Zugriff auf die intranet-Seite.

Also, wenn Jim geht, um die intranet-site möchte ich die site zu erhalten "Domain\Jim", während, wenn Anne geht auf der intranet-site möchte ich die site zu erhalten "Domäne\Anne".

Nur die Windows-Authentifizierung aktiviert ist auf meinem IIS server, die Anonyme Authentifizierung deaktiviert ist.

Meine Website setzen die Verwendung von Windows-Authentifizierung, und deaktivieren Sie die anonyme Authentifizierung.

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

Durch Debuggen kann ich verwenden System.Security.Principal.WindowsIdentity.GetCurrent().Name, aber natürlich gibt "IIS APPPOOL\SiteName" auf dem IIS-server.

Fand ich viele Beispiele aus der älteren version ASP.NET mit HttpContext, und ich habe versucht, die Injektion, die in meinem controller mit dem folgenden aber Benutzername endet null.

//Startup.cs
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

//HomeController.cs
public HomeController(IHttpContextAccessor _accessor)
{
    string userName = _accessor.HttpContext.User.Identity.Name;
}

Was ist der richtige Weg, um pass den Windows-Benutzernamen, um eine intranet-site in ASP.NET Core RC2 MVC6?

  • Haben Sie deaktiviert den anonymen Zugriff auf Ihre site?
  • Ja. Ich habe es deaktiviert mit den folgenden innen - <system.web>. <Berechtigung> <deny users="?"> </authorization> habe ich aktualisiert meine Frage mit dem <system.web - > block.
  • Haben Sie eine Authentifizierungs-middleware registriert?
  • weist Ihre Website einen login-Bildschirm..? auch eine google-Suche es gibt Informationen heraus dort auf, wie dies zu tun. hier ist ein freeB stackoverflow.com/questions/30701006/...
  • Kein login-Bildschirm benötigt mit windows-auth
  • Vielleicht ist diese config wird helfen stackoverflow.com/a/29500929/1663001
  • Zuerst ein upgrade auf RTM. Zweitens erlernen Sie, was ist ASP.NET Kern, der in docs.asp.net die Einstellungen, Die Sie setzen im web.config nutzlos sind, wie Sie sind, nicht für ASP.NET Core überhaupt.
  • Ich habe Gegoogelt, diese ausgiebig @MethodMan, aber leider sind die meisten Antworten sind für ältere Versionen von ASP.NET, nicht der Kern. Das Ergebnis ist, dass die meisten Lösungen, einschließlich die, die Sie verknüpft sind, nicht in ASP.NET Core. Es wird weder der Zugriff auf das System.Web.Aktuellen Pfad, noch ist es ein Benutzer.GetUserId () - Methode.
  • Ich habe versucht, die config führt aber zu einem 500 internal server error. Danke aber.
  • Bitte verwenden Sie nicht MVC6 tags mehr. Es ist für eine zukünftige version von ASP.NET MVC basiert auf der alten webstack (MVC5). ASP.NET Kern ist eine komplett neue und inkompatible portable-version basiert .NET Core. asp.net-core-mvc und/oder asp.net-core - tags statt, und Ihre Frage ist wahrscheinlich eher gefunden werden von Leuten, die Ihnen helfen können, mit dem Problem
  • Hat die jemand hat kein Glück mit asp.net Kern-und IIS zu können, Lesen Sie das Thema? Ich habe versucht, eine Menge von Optionen, die ich Lesen, aber nicht bekommen, um zu arbeiten.
  • Ich kann nicht ankommen es zu wirken, wenn Sie veröffentlicht IIS entweder. Ich hoffe jemand kann bekommen diese auch.

InformationsquelleAutor Kyle | 2016-07-06
Schreibe einen Kommentar