如何从LDAP查询多个用户。
我在我的Java程序中使用DirContext.search(base,filter,scope);
目前它只能使用一个值的过滤器正常工作。过滤器为("uid=name")
但我的需求是一次传递多个名称到过滤器中,例如:
filter=("uid=name1,name2,name3....") .
LDAP使用“PREFIX”符号来表示其过滤器。
例如:
OR条件
(|(attr1=val1)(attr2=val2)(attr1=val2))
AND 条件
(&(attr1=val1)(attr2=val2)(attr1=val2))
在您的情况下,筛选条件将是这样的:
filter = "(|(uid=name1)(uid=name2)(uid=name3))"
以上过滤器的意思是:
查找具有
uid=name1
ORuid=name2
ORuid=name3
的任何用户。
这将列出用户ID为 name1、name2 或 name3 的用户。
更多示例:
相等:
(attribute=abc)
,例如 (&(objectclass=user)(displayName=JohnDoe))否定:
(!(attribute=abc))
,例如 (!objectClass=group)存在:
(attribute=*)
,例如 (mailNickName=*)不存在:
(!(attribute=*))
,例如 (!proxyAddresses=*)大于等于:
(attribute>=abc)
,例如 (storageQuota>=100000)小于等于:
(attribute<=abc)
,例如 (storageQuota<=100000)相似度:
(attribute~=abc)
,例如 (displayName~=JohnDoe)*(~=可能不适用于所有目录服务器!)
通配符: 例如(sn=J*)或(mail=*@example.com)或(givenName=*John*)
希望这有所帮助!