我有一个使用ASP.NET Core RC2构建的MVC6内部网站。我想获取访问内部网站的人的Windows用户名。
因此,如果Jim访问内部网站,我希望该网站接收到"Domain\Jim",而如果Anne访问内部网站,我希望该网站接收到"Domain\Anne"。
仅启用了IIS服务器上的Windows身份验证,匿名身份验证已禁用。
我的网站已设置为使用Windows身份验证并禁用匿名身份验证。
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
通过Debug,我可以使用System.Security.Principal.WindowsIdentity.GetCurrent().Name
,但在IIS服务器上,它当然会返回"IIS APPPOOL\SiteName"。
我在旧版本的ASP.NET中找到了许多使用HttpContext的示例,并尝试将其注入到我的控制器中,但是用户名最终为空。
//Startup.cs
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
//HomeController.cs
public HomeController(IHttpContextAccessor _accessor)
{
string userName = _accessor.HttpContext.User.Identity.Name;
}
在ASP.NET Core RC2 MVC6中,将Windows用户名传递给内部网站的正确方式是什么?