In un'applicazione console .NET Core (nota: non in ASP.NET Core!), Come posso ottenere l'utente corrente? Per essere chiari, sto cercando quello che era disponibile come Thread.CurrentPrincipal, che non esiste più. PlatformServices non contiene queste informazioni e nemmeno Ambiente.Ottenere l'utente corrente in .NET Core Console
risposta
Capito. Un'opzione possibile è quella di utilizzare WindowsIdentity:
WindowsIdentity.GetCurrent().Name
E 'necessario aggiungere il pacchetto System.Security.Principal.Windows. Ovviamente, questo è solo per Windows.
Un'altra opzione è quella di utilizzare Reclami:
ClaimsPrincipal.Current
Per questo, il pacchetto da aggiungere è System.Security.Claims. In Windows, per impostazione predefinita, l'identità sarà vuota.
System.Security.Principal.Windows
non disponibile se non si importa manualmente la DLL. Di seguito ha lavorato per me:
Environment.UserName;
Secondo il .NET Core System.Environment Source Code, questa soluzione "dovrebbe essere sufficiente nel 99% dei casi."
Nota: assicurarsi di avere come target DotNetCore 2.0
o successivo come 1.0
e 1.1
non avere questa definizione.
Non sembra che abbia un '.UserName' in' Ambiente' –
Assicurati di scegliere come target 'DotNetCore 2.0' o successivo. 'DotNetCore 1.0' e' DotNetCore 1.1' non sembrano avere '.UserName'. –
Se si desidera riutilizzare IIdentity
astrazione di passare attraverso il vostro strato intermedio fare questo:
var identity = new GenericIdentity(Environment.UserDomainName + "\\" + Environment.UserName, "Anonymous");
P.S. nel nucleo 2 console app: ClaimsPrincipal.Current
e Thread.CurrentPrincipal
sono sempre nullo (se non si dispone di installazione loro) e questo codice non funziona nemmeno:
IPrincipal principal = new GenericPrincipal(identity, null);
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
dopo questo ClaimsPrincipal.Current
e Thread.CurrentPrincipal
sono ancora nullo.
WindowsIdentity.GetCurrent()
funziona, ma ci dovrebbero essere motivi più forti per fare riferimento a System.Security.Principal.Window
quindi ottenere il "nome utente".
- 1. System.Environment in .NET Core 1.0
- 2. Console.Write in .Net Core
- 3. Come ottenere le informazioni dell'utente in DbContext utilizzando Net Core
- 4. Come si crea un binario nativo su .NET Core usando l'anteprima corrente?
- 5. WebUtility.HtmlDecode replacement in .NET Core
- 6. Ottenere i nomi dei giorni della cultura corrente in .NET
- 7. Thread.CurrentPrincipal in .NET applicazione console
- 8. Impossibile pubblicare i binari in .net core
- 9. . Iniezione delle dipendenze net-core
- 10. Come posso importare un progetto .NET Core in un altro progetto .NET Core in Visual Studio?
- 11. Differenza tra ASP.NET Core (.NET Core) e ASP.NET Core (.NET Framework)
- 12. Come pubblicare l'app della console (.NET core 5) come singolo file EXE in VS 2015 RC?
- 13. Aggiornamento linea corrente in VB Console
- 14. Utilizzo di .NET Core sull'applicazione desktop
- 15. ORM eseguiti su .NET Core 5
- 16. Come ottenere l'ProcessID corrente?
- 17. Come eseguire una DLL Core .Net?
- 18. P-Invoke in .net core con Linux
- 19. Gestione nomi file multipiattaforma in .NET Core
- 20. .NET Core RC2 in Service Fabric
- 21. MemoryCache.Default non disponibile in .NET Core?
- 22. Come utilizzare jquery in ASP. NET Core
- 23. Abbastanza speciale PublicKey in .NET core assembly
- 24. Thread.Sleep() in .NET Core su Mac
- 25. Riferimento alla libreria .NET Core in .NET 4.5.2
- 26. . NET Core su Raspbian/ARM?
- 27. .Net Core genera lo stesso IL di standard .Net?
- 28. .net console app 32 vs 64 bit
- 29. Come cancellare la console in C# .net?
- 30. Come eseguire un'applicazione console .NET in background
Quello che sento tra le righe: ClaimsPrincipal è il futuro;) – Thomas
'ClaimsPrincipal.Current' * non * funziona in un controller, sarà nullo. È necessario accedere alla proprietà 'HttpContext.User', che sarà in effetti un'istanza' ClaimsPrincipal'. –
Buono a sapersi. Un'API statica per ClaimsPrinciple non ha comunque molto senso. – Thomas