繁体   English   中英

ldap使用Java搜索过滤器

[英]ldap search filter with java

ldap搜索过滤器出现问题。 我想搜索根节点的所有子节点。 我希望用户的电子邮件用户名包含查询字符串。 例如,如果我有

  • foo_l.c_bar@foobar.com
  • foob​​ar@foo_l.c_bar

并且搜索查询是“ lc”,我只需要foo_l.c_bar@foobar.com

令人惊讶的是,以下代码返回第一个和第二个。

String query = "...";
DirContext dc = ...;
NamingEnumeration<SearchResult> ne = dc.search(root,
    "(email=*{0}*@*)",
    new Object[] { query }, null);

"*...*@*"查询过滤器出了什么问题?

我无法给您完整的答案,但是,如果您使用过滤器"(email=*lc*@*)"从命令行尝试ldapsearch ,则应该得到正确的记录...所以我认为问题出在Java方法而不在过滤器中。

希望它能对您有所帮助。

我假设您忘记粘贴格式化查询及其代码的{0}参数的代码了吗? 编辑:哇,算了,我什至不知道采用filterArgs数组的方法。

附带说明一下,inetOrgPerson中电子邮件地址的标准属性是“ mail”而不是“ email”(但是您的情况可能会有所不同)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM