Um den Benutzernamen eines Benutzers erhalten die Website
Sie können von der „Windows-Authentifizierung“ Feature von IIS denken besucht. IIS authentifiziert den Benutzer, der die Website besucht, gegen eine Windows-Domäne und leitet dieses Windows-Authentifizierungstoken anschließend an ASP.NET Core weiter. ASP.NET Core kann diese Funktion nur verwenden, wenn sie mit IIS (oder IIS Express) gehostet wird und die IIS-Integrations-Middleware verwendet. Siehe https://github.com/aspnet/IISIntegration. Da IIS nur Windows ist, ist es nicht möglich, einen Client-Benutzernamen beim Hosten der Website unter Linux oder OSX zu erhalten.
Um den Benutzernamen des Kontos Hosting der Web-Server
Ab .NET-Core 1.0, zu erhalten gibt es keine Cross-Plattform-API für einen Benutzernamen direkt zu bekommen. Wenn Sie Windows verwenden, funktioniert System.Security.Principal.WindowsIdentity
, aber das wird PlatformNotSupported
auf Linux/MacOS werfen.
Laut Konvention setzen viele Systeme den Benutzernamen in einer Umgebungsvariablen. Sie können System.Environment
verwenden, um dies zu holen.
var username = Environment.GetEnvironmentVariable("USERNAME") ??
Environment.GetEnvironmentVariable("USER");
Ein anderer aber komplizierter Ansatz ist es, p/aufrufen, um native Systemaufrufe, die Informationen über den Benutzer, wie getpwuid_r
(Siehe die Manpages für Linux und OSX.)
Works eine Behandlung zurückbringen, Dank . – shammelburg
Um einen Benutzer für jedes Betriebssystem zurückzugeben, können Sie auch 'User.Identity.Name' hinzufügen -' var username = User.Identity.Name ?? Environment.GetEnvironmentVariable ("USERNAME") ?? Environment.GetEnvironmentVariable ("USER"); ' – shammelburg
@shammelburg Ich habe möglicherweise Ihre ursprüngliche Absicht missverstanden. Möchten Sie den Benutzernamen des Benutzers im Browser abrufen? Oder der Benutzername, auf dem der Server läuft? – natemcmaster