В консольном приложении .NET Core (обратите внимание: не ASP.NET Core!), Как я могу получить текущего пользователя? Чтобы быть ясным, я ищу то, что раньше было доступно как Thread.CurrentPrincipal, которое больше не существует. ПлатформаServices не содержит эту информацию, и среда тоже.Получение текущего пользователя в .NET Core Console
ответ
Got it. Возможным вариантом является использование WindowsIdentity:
WindowsIdentity.GetCurrent().Name
Необходимо добавить пакет System.Security.Principal.Windows. Конечно, это только для Windows.
Другой вариант заключается в использовании Претензии:
ClaimsPrincipal.Current
Для того, чтобы пакет добавить в System.Security.Claims. В Windows по умолчанию идентификатор будет пустым.
System.Security.Principal.Windows
не доступен, если вы не импортируете DLL вручную. Следующие работал для меня:
Environment.UserName;
Согласно .NET Core System.Environment Source Code, это решение «должно хватить в 99% случаев.»
Примечание: убедитесь, что вы нацеливаете DotNetCore 2.0
или более поздние версии, поскольку 1.0
и 1.1
не имеют этого определения.
У меня, похоже, нет '.UserName' в' Environment' –
Убедитесь, что вы нацеливаете «DotNetCore 2.0» или более позднюю версию. 'DotNetCore 1.0' и' DotNetCore 1.1', похоже, не имеют '.UserName'. –
Если вы хотите использовать IIdentity
абстракции, чтобы пройти через средний слой сделать это:
var identity = new GenericIdentity(Environment.UserDomainName + "\\" + Environment.UserName, "Anonymous");
P.S. в основной 2 консольного приложения: ClaimsPrincipal.Current
и Thread.CurrentPrincipal
всегда нуль (если вы не настроили их), и этот код не будет работать:
IPrincipal principal = new GenericPrincipal(identity, null);
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
после этого ClaimsPrincipal.Current
и Thread.CurrentPrincipal
по-прежнему нулевой.
WindowsIdentity.GetCurrent()
работает, но должны быть более веские причины ссылаться на System.Security.Principal.Window
, затем получить «имя пользователя».
- 1. Environment.UserDomainName эквивалент в приложении .NET Core console
- 2. Startup.cs в самообслуживании .NET Core Console Application
- 3. Http-прослушиватель в приложении .Net Core console?
- 4. Получение текущего пользователя в DotNetNuke
- 5. .Net Core/Console Applicatin/Configuration/XML
- 6. Получение текущего пользователя
- 7. Получение текущего идентификатора пользователя
- 8. Symfony2 Получение текущего пользователя
- 9. Получение GUID текущего пользователя?
- 10. django получение текущего идентификатора пользователя
- 11. Получение текущего подписанного пользователя PHP
- 12. Как реализовать MVVM в приложении .NET Core Console?
- 13. Правильный способ получения текущего Идентификатора пользователя в Entity Framework Core
- 14. Создание пользователя в консоли .NET Core Application
- 15. Получение текущего каталога в веб-приложении .NET
- 16. Завершить получение сокета в .NET core
- 17. Получение текущего пользователя в sifefinity 4.4
- 18. Получение обоев текущего пользователя в VB.NET
- 19. Получение текущего пользователя понравилось в Facebook
- 20. Получение текущего имени пользователя в Identity 2.0
- 21. Получение идентификатора текущего пользователя в ASP.net
- 22. Получение текущего объекта пользователя в ASP.Net MVC
- 23. Приложение .NET Core console бросает MissingManifestResourceException при потреблении пакета Clipr
- 24. Запуск приложения .NET Core Console на Mac или Windows
- 25. получение странных ошибок компиляции - .Net Core
- 26. Как получить текущего пользователя входа в ViewComponent Asp.Net Core
- 27. Как получить текущего пользователя вне контроллера в веб-API .NET Core
- 28. Аутентификация Windows - Получение текущего имени пользователя
- 29. Asp.Net logging, IIS, получение текущего пользователя
- 30. Получение начального файла паролей для текущего пользователя
То, что я слышу между строками: ClaimsPrincipal - это будущее;) – Thomas
'ClaimsPrincipal.Current' будет * не * работать в контроллере, он будет равен нулю. Вам нужно получить доступ к свойству 'HttpContext.User', которое действительно будет экземпляром' ClaimsPrincipal'. –
Полезно знать. Статический API для ClaimsPrinciple не имеет никакого смысла в любом случае IMHO. – Thomas