我有一个网络应用程序,它将驻留在生产服务器上,我想让用户登录计算机名称,大约
DOMAINNAME / USERNAME
许多人告诉我,我必须使用模拟/委派才能获得此功能,但除此之外没有提供任何详细信息。最初,我的测试使用了:
Response.Write("HttpContext: " & HttpContext.Current.User.Identity.Name & " \n")
Response.Write("Windows Identity: " & WindowsIdentity.GetCurrent.Name & " \n")
Response.Write("Thread: " & Thread.CurrentPrincipal.Identity.Name & " \n")
Response.Write(Request.ServerVariables("LOGON_USER"))
Response.Write(User.Identity.Name)
在我的本地cassini服务器上产生有效结果,但在发布时不会产生。添加以下行:
Dim ctx As WindowsImpersonationContext = WindowsIdentity.Impersonate(IntPtr.Zero)
将WindowsIdentity更改为
SERVERNAME \ ASPNET
但是,我希望当前用户(不是服务器的)用户名。如何操纵模拟课程给我这个?
修改 在Heinzi的评论中提供的解决方案似乎是正确的。但是,我相信这只是IE6。我工作的公司可能会在不久的将来转向IE8,我希望至少确保IE 6/7/8的功能。这可能吗?
答案 0 :(得分:1)
你需要
<authorization>
部分)中关闭匿名用户,<identity impersonate="true" />
部分添加<system.web>
。编辑:This question显示来自web.config的相关部分。