我有一个asp.net Web应用程序,我尝试在其上实现Windows身份验证。
该应用程序托管在IIS上,并在管理员帐户下运行。
在应用程序中,我试图获取当前Windows登录用户的名称,例如Catalin Gavan。
无论我尝试什么,我总是得到管理员用户,即运行ApplicationPool的用户。
这是我试过的:
Request.LogonUserIdentity); // "NT AUTHORITY\\IUSR"
WindowsIdentity.GetCurrent(); // "ADIDEVNET\\administrator"
WindowsIdentity.GetAnonymous();
WindowsIdentity.GetCurrent(true); // null
WindowsIdentity.GetCurrent(false); // "ADIDEVNET\\administrator"
如何从代码后面获取当前登录的Windows用户?
答案 0 :(得分:0)
启用Windows身份验证,应该修复它。其次,当您在“高级设置”中将身份设置为管理员时,它将始终以管理员身份登录。从那里删除身份。设置完成后,用户将“模拟”管理员帐户。
尝试这些web.config设置。
<system.web>
...
<authentication mode="Windows" />
<authorization>
<deny users="?" /> <!-- may want to remove this if you want to allow anonymous -->
</authorization>
<identity impersonate="false" />
</system.web>
答案 1 :(得分:0)
在ASP.NET Web窗体中,您应该访问Page.User
,并且在ASP.NET MVC或Web API中,您应该相应地调用Controller.User
或ApiController.User
。此用户标识来自请求,并设置为线程标识。
WindowsIdentity.GetCurrent
返回进程标识,这显然是您设置的应用程序池标识。