我启用了模拟和Windows身份验证。
<authentication mode="Windows" />
<identity impersonate="true" userName="name" password="passord"/>
但是Thread.CurrentPrincipal.Identity.Name
返回经过身份验证的用户的名称,WindowsIdentity.GetCurrent()
返回模拟身份。
这些身份不应该相同吗?
在这种情况下代码是否运行?
答案 0 :(得分:10)
据我所知,Thread.CurrentPrincipal
包含线程已启动的条件信息,包括WindowsIdentity。这就是Thread.CurrentPrincipal.Identity.Name
返回启动线程的用户名的原因。
相反,WindowsIdentity.GetCurrent()返回一个WindowsIdentity对象,该对象表示当前Windows用户,该用户已通过Impersonation进行了更改。
我不是100%肯定它,但我认为这是有效的。