我们有一个现有的webform,允许使用表单身份验证,要求用户键入id和pw来登录到系统。客户端请求程序只从windows登录用户名中获取用户名,这里我指的是用于登录计算机的用户名,而不是网页。
我用来尝试获取用户名的方法:
System.Environment.UserName;
HttpContext.Current.User.Identity.Name;
Context.User.Identity.Name;
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Page.User.Identity.Name;已在多个不同的对中启用ASP.NET身份验证(WA)、窗体身份验证(FA)、基本身份验证(BA)、匿名身份验证(AA)和Windows模拟(AI)。我发现最多的建议是启用(WA)、禁用(AA)、启用(AI),但都无济于事。在我的测试中,唯一影响上面代码的似乎是AI。
启用(AI)会给我: NT权限\IUSR
禁用(AI)给我:集成的IIS APPPOOL\ASP.NET V4.0
而我尝试获取的是MyDomain\MyUserName
我尝试从另一台没有托管该页面的计算机访问该页面,但仍然在相同的域中,它给出了相同的输出。这使我怀疑代码只给了我在服务器中运行进程的用户,而不是客户端的Windows用户。
我的问题是,有谁知道如何获得登录到域的人的用户名?
*其他信息:我在域中使用超级用户帐户,并提供管理员帐户和密码以管理员身份运行visual studio,如果这会有任何影响的话。
发布于 2018-06-20 14:20:57
您必须在IIS中启用Windows身份验证,并禁用其他身份验证方法。
并确保在web.config中将身份验证模式设置为"Windows“。
<authentication mode="Windows"/>希望它能帮上忙!
https://stackoverflow.com/questions/50941310
复制相似问题