JAVA连接LDAP(Windows AD)验证时,密码为空验证通过的问题?

网上找到LDAP用户密码验证的方法,输入正确的密码验证通过,错误的密码便会验证失败,这是符合要求的,但是当密码我给空字符串(“”)的时候竟然也能验证通过,请问原因是什么?... 网上找到LDAP用户密码验证的方法,输入正确的密码验证通过,错误的密码便会验证失败,这是符合要求的,但是当密码我给空字符串(“”)的时候竟然也能验证通过,请问原因是什么? 我想实现的是密码必须匹配才验证通过,空串跟真正密码不等需要返回验证失败的结果,请问该如何修改,谢谢大家~~
补充:不能通过首先判断password.equals(""),因为我们的应用程序中密码是可以为空的,完全靠LDAP来验证空串跟密码是否匹配就可以。
public boolean validateUserForAD(String username,String password){
String host = "172.16.10.190";
String port = "389";
String domain = "domain200";
{
Hashtable env = new Hashtable();
DirContext ctx;

String user = domain + "\\" + username;
String passwd = password;

env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, passwd);

String url = new String("ldap://" + host + ":" + port);
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");

env.put(Context.PROVIDER_URL, url);

try {
ctx = new InitialDirContext(env);
ctx.close();
System.out.println("验证成功!");
return true;
} catch (NamingException err) {
err.printStackTrace();
System.out.println("验证失败!");
return false;
}
}
}
请大家注意我上面的补充,谢谢~·
展开
 我来答
plx2003
2010-03-30 · TA获得超过206个赞
知道小有建树答主
回答量:261
采纳率:0%
帮助的人:245万
展开全部
密码为空 ,实际值是null

任何值与null比较时,记得返回值都是true,

故在程序里需要预先把空值过滤掉

if(pwd==null)
System.out.println("输入密码为空,验证不通过!");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
corruptsatan
2010-04-06 · TA获得超过1108个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:613万
展开全部
String passwd;
if("".equals(password.trim())){
passwd = null;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xcg9593
2010-03-30 · TA获得超过280个赞
知道小有建树答主
回答量:534
采纳率:0%
帮助的人:139万
展开全部
匹配问题 可以针对空字符串的情况特殊处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圏外Dd
2010-03-30 · TA获得超过415个赞
知道小有建树答主
回答量:292
采纳率:0%
帮助的人:191万
展开全部
在String passwd=password;加入判断
if(passwd.trim().equals("")){
System.out.println("验证失败");
return false;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式