高手求救,Request.ServerVariables("LOGON_USER")问题!及时揭帖

showmetoyou 2006-07-24 04:47:50
我的机器WindowsXp+IIS5.1,服务器win2003+IIS6.0
两边都是如下情况
asp代码,需要取得Request.ServerVariables("LOGON_USER")的值,代码如下
Dim userName , domainName
userName = Request.ServerVariables("LOGON_USER")
'userName = Request("LOGON_USER")
If userName = "" Then
Response.Write ("401 Authorization Required")
Else
如果IIS设置允许匿名访问,取不到值.
如果IIS设置不允许匿名访问,用localhost浏览,正常能够得到系统的登陆域名和用户名.
但我用本机IP或者127.0.0.1浏览或者局域网访问,就弹出一个登陆框,然输入用户名,密码!这不是我想要的!
我希望的得到是没有这个对话框,并直接就取到值!
basic 验证,Digest验证,windows集成验证我都组合试了,都不行!因为我们公司网络安全做得很多,
是不是那些安全策略的问题?
请高手指点!高分立即送!
...全文
348 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
showmetoyou 2006-07-25
问题没解决,大家不用灰心,发现最新情况,希望得到解释:
公司有一个类似的程序可以正常工作,即能够取到用户名
IIS设置:
不允许匿名访问,集成windows验证
情况:
当用域名访问http://domain/English/login.aspx时,不会弹出NT认证登陆框,且得到登陆用户名
当用内网IP访问http://192.168.0.8/English/login.aspx时,就会弹出NT认证登陆框,
我不知道什么原因,请高手再指点,今天不解决也揭帖!不信大家明天看结果
回复
若白师妹 2006-07-25
贴错鸟
回复
若白师妹 2006-07-25
a.asp:
<form action="b.asp" method="post">
域用户:<input type=text name=id><br>
域密码:<input type=text name=pwd><br>
登陆域:<input type=text name=domain><br>
<input name=sub type=submit value="提交">
</form>

b.asp:
<script language=javascript RUNAT="SERVER">
function logonDoADLogon(p_strDomain, p_strUserID, p_strPWD)
{ //return true;
var f_oIADS, f_oUser, f_oContainer;
var f_blnRet = true;

try
{
var f_oIADS = GetObject('WinNT:');
f_oContainer = f_oIADS.OpenDSObject('WinNT://' + p_strDomain, p_strDomain + "\\" + p_strUserID, p_strPWD, 0);

delete f_oContainer;
delete f_oIADS;
}
catch (e)
{
return false;
}

try
{
var objUser = GetObject("WinNT://" + p_strDomain + "/" + p_strUserID );
delete objUser;
}
catch(e){
return false;
}

return true;
}
</script>

<%
id=trim(request("id"))
pwd=trim(request("pwd"))
domain=trim(request("domain"))
if logonDoADLogon(domain,id,pwd) then
response.write "True"
else
response.write "False"
end if
%>

try it
回复
showmetoyou 2006-07-24
asp.net下就比较简单!有好多方法可以得到这个用户名,密码!但asp好像只有这个方法!兄弟姐妹们还有其他方法吗?
回复
showmetoyou 2006-07-24
TO jspadmin(阿笨狗@厦门 http://www.pifoo.com) :
你的说法有道理!因为这个系统以前也只有一两个人用!没怎么普遍用!

回复
孟子E章 2006-07-24
必须输入用户名字和密码的
回复
jspadmin 2006-07-24
如果IIS设置允许匿名访问,取不到值.
如果IIS设置不允许匿名访问,用localhost浏览,正常能够得到系统的登陆域名和用户名.

必须要这样,否则没有办法

以前能运行,或许是记住了密码,所以不用输入密码
回复
若白师妹 2006-07-24
If Request("LOGON_USER") = "" Then
Response.Status = "401 Unauthorized"
end if

有什么用?
回复
若白师妹 2006-07-24
即如果IIS设置允许匿名访问,也能取得值!
后面没有人修改,但不能用了!

不可能,如果可能,你告诉我,我也学习下,我只会在客户端用js去得到他的登陆用户名,但这也还要客户端的安全许可,而且还要提交给服务器,根本不是我们想要的,我到现在还没有找到可以实现的
回复
showmetoyou 2006-07-24
To sbdx(塞北的雪) ( )
兄弟!谢谢你的回答!都会给分,
但我不是很明白!能不能说清楚点!我加上好像没有什么用!
回复
showmetoyou 2006-07-24
to ghostzp(在我的世界里,你依旧纯净,脏了的只是这个世界) :
问题是:听网管说,这个程序曾经正常运行过半个月左右,
即如果IIS设置允许匿名访问,也能取得值!
后面没有人修改,但不能用了!
回复
sbdx 2006-07-24
<%
Response.status="401 Unauthorized"
%>
<%=now()%>
回复
51one 2006-07-24
楼主可以看看这个帖:

http://topic.csdn.net/t/20001024/11/36094.html
回复
若白师妹 2006-07-24
如果IIS设置允许匿名访问,取不到值.
如果IIS设置不允许匿名访问,用localhost浏览,正常能够得到系统的登陆域名和用户名.

必须要这样,否则没有办法
回复
51one 2006-07-24
和安全策略没关系
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2006-07-24 04:47
社区公告
暂无公告