在.NET Core控制台应用程序中(注意:不是ASP.NET Core!),如何获取当前用户?为了清楚起见,我正在寻找以前不再存在的Thread.CurrentPrincipal.PlatformServices不包含此信息,Environment也不包含此信息.
Ric*_*res 23
得到它了.可能的选择是使用WindowsIdentity:
WindowsIdentity.GetCurrent().Name
Run Code Online (Sandbox Code Playgroud)
有必要添加System.Security.Principal.Windows包.当然,这仅适用于Windows.
另一种选择是使用声明:
ClaimsPrincipal.Current
Run Code Online (Sandbox Code Playgroud)
为此,要添加的包是System.Security.Claims.在Windows中,默认情况下,标识将为空.
Fox*_*_64 10
System.Security.Principal.Windows除非您手动导入DLL,否则不可用.以下对我有用:
Environment.UserName;
Run Code Online (Sandbox Code Playgroud)
根据.NET Core System.Environment源代码,这个解决方案"应该足够99%的情况."
注意:请确保您定位DotNetCore 2.0或稍后定位,1.0并且1.1没有此定义.
编辑2019年1月22日:该方法的旧源的链接已过时.PR 34654搬到System.Environment了住CoreLib.对于那些好奇的阅读源代码的人来说,你可能仍然会这样做,尽管评论表明它"应该足够99%的情况"已被删除.
| 归档时间: |
|
| 查看次数: |
8343 次 |
| 最近记录: |