Ich habe eine Intranet-App asp.net mvc Website. gibt es sowieso um den Windows NT Login vom Benutzer zu erfassen ohne ein komplettes Login System auf der Seite zu haben. Ich möchte nicht permissioning, aber ich möchte einige Logging auf dem Server tun, um Anfragen zu verfolgen, etc. .
Sie können HttpContext.Current.User.Identity.Name
verwenden, wenn Sie die Site für die Windows-Authentifizierung eingerichtet haben. Viele Browser geben den Benutzernamen transparent weiter.
Auf welcher Windows-Version läuft diese mvc-App?
Sie könnten Folgendes versuchen:
Würde das tun?
Gehen Sie zur Web.Config-Datei für Ihre Anwendung (stellen Sie sicher, dass es die wichtigste ist, nicht die Web.Config unter Ansichten), vermerken Sie <authentication mode="Forms">
, wenn Sie sie sehen, und fügen Sie Zeilen wie folgt hinzu:
Sie müssen den Abschnitt <authorization>
nicht einschließen, aber er ist nützlich, wenn Sie den Zugriff für bestimmte Gruppen und Benutzer zulassen und allen anderen den Zugriff verweigern möchten. Wenn Sie IE verwenden, werden die Anmeldeinformationen automatisch weitergeleitet. Sie können dies testen, indem Sie den Benutzernamen in Ihrer Ansicht ausdrucken:
Wenn Sie Ihre Website mit Firefox oder einem anderen Browser außer IE öffnen, werden Sie zur Eingabe des Benutzernamens und des Passworts aufgefordert, da die Anmeldeinformationen nicht automatisch weitergeleitet werden (obwohl Sie Firefox offenbar als Dan Diplo weiterleiten können) Erwähnungen oben).
Wenn Sie diese Anmeldeinformationen an einen anderen Server, z. B. einen SQL-Server, weiterleiten möchten, bereitet Ihnen das nach meiner Erfahrung Kopfschmerzen, weil Sie auf ein Double-Hop-Problem stoßen. Die einzige Problemumgehung, die ich kenne, besteht darin, IIS und SqlServer auf demselben Server zu hosten oder eine Anmeldung für Ihr Intranet zu haben, damit Sie den Benutzernamen und das Kennwort an SQLServer weitergeben können.
Tags und Links asp.net-mvc username