ASP.NET Core检测Mac OS用户

时间:2016-06-22 14:55:38

标签: asp.net asp.net-core cross-platform

我使用带有Windows身份验证的VS2015创建了一个.Net Core RC2 Web应用程序。

然后我将项目复制到Mac OSX El Capitan并使用终端启动了应用程序。

应用程序按预期启动,但是,由于应用程序在我的Mac上运行,因此无法显示Windows用户。

如何退回Mac用户并显示名称?

这对Linux用户也很有用。

1 个答案:

答案 0 :(得分:7)

获取访问该网站的用户的用户名

您可能正在考虑IIS的“Windows身份验证”功能。 IIS对于针对Windows域访问网站的用户进行身份验证并将该Windows身份验证令牌转发到ASP.NET Core有一定的魔力。 ASP.NET Core只能在使用IIS(或IIS Express)托管并使用IIS Integration中间件时使用此功能。见https://github.com/aspnet/IISIntegration。由于IIS仅限Windows,这意味着在Linux或OSX上托管网站时无法获得客户端用户名。

获取托管网络服务器的帐户的用户名

从.NET Core 1.0开始,没有用于直接获取用户名的跨平台API。如果你在Windows上,System.Security.Principal.WindowsIdentity可以工作,但这会在Linux / macOS上抛出PlatformNotSupported

按照惯例,许多系统在环境变量中设置用户名。您可以使用System.Environment来获取此内容。

var username = Environment.GetEnvironmentVariable("USERNAME") ??
               Environment.GetEnvironmentVariable("USER");

另一种更复杂的方法是p / invoke返回有关用户信息的本机系统调用,例如getpwuid_r(请参阅LinuxOSX的手册页。)