Classic ASP Request.ServerVariables("LOGON_USER")返回错误的用户名。以下是场景:
我在域中有两个帐户,一个用于管理,另一个用于正常使用。在运行ASP脚本的服务器上,管理员帐户被设置为admin (在Administrators组中)。服务器是运行IIS 6.0的Windows 2003。
我使用我的普通用户帐户登录到我的机器,并转到页面,它返回我的管理员帐户用户名。为什么会发生这种情况?这对其他人来说很好用。
<%
Response.Write "LOGON_USER: " & Request.ServerVariables("LOGON_USER") & "<br>"
Response.Write "REMOTE_USER: " & Request.ServerVariables("REMOTE_USER") & "<br>"
Response.Write "AUTH_USER: " & Request.ServerVariables("AUTH_USER") & "<br>"
Response.Write "<br>"
'Show all server variables
For Each Item In Request.ServerVariables
Response.Write Item & " = " & Request.ServerVariables(Item) & "<br>"
Next
%>匿名访问处于关闭状态,Windows身份验证处于打开状态。
谢谢,
Jari
发布于 2011-03-14 21:18:25
潜在的问题可能是这样一个事实,即我使用管理员用户名将$share打开到同一服务器,而在同一服务器上使用IE与普通用户进行asp会话。
可以从控制面板-->用户帐户-->管理您的密码-->选择有问题的服务器并将用户名更改为正确的用户名。无需输入密码。好的,关闭并取消。您可能需要打开一个新的IE才能使更改生效。
每次用户在“幕后”进行更改时,都需要执行此操作。
发布于 2010-02-25 05:47:53
根据目前所提供的信息,我无法解释您所看到的内容。我可以告诉你,运行应用程序池的帐户是无关紧要的。
传统ASP总是模拟用户,或者是匿名用户帐户,或者是与请求到达的连接相关联的用户。这可能是你的问题的线索。
ASP中的身份验证是在连接级别处理的,一旦连接通过身份验证,它就会与用户相关联。连接可以由客户端和下游的其他HTTP设备保持打开。到达该连接的所有后续请求将不需要重新验证,与该连接相关联的当前用户用于提供处理该请求的线程所模拟的用户上下文。
我见过中间设备或调试代理(如fiddler)维护连接,并在来自各种客户端的后续请求中重用它们。在这种情况下,可以让在一个用户上下文中运行的客户端在另一个用户上下文中由Web服务器处理请求。太恶心了!
我在较旧的Citrix终端服务器上也看到过类似的情况。HTTP连接由运行在终端服务器上的多个客户端共享,从而导致安全上下文的交叉。唉哟!
这种情况的另一种变化是拒绝对内联网上的当前用户访问服务器上的资源。浏览器显示Net logon对话框,用户输入Admin用户。在会话期间,浏览器现在使用管理员用户登录凭据来访问同一台服务器上的其他资源,即使当前登录的用户也会这样做。
发布于 2010-02-24 18:25:10
根据关于此变量的MSDN文档:
用户在连接到您的网站服务器时模拟的Windows帐户。使用REMOTE_USER、UNMAPPED_REMOTE_USER或AUTH_USER查看请求标头中包含的原始用户名。只有在安装了身份验证筛选器的情况下,LOGON_USER才会保存与这些其他变量不同的值。
也许您有一个身份验证过滤器。
https://stackoverflow.com/questions/2325005
复制相似问题