【发布时间】:2017-02-23 12:24:10
【问题描述】:
如何从 LDAP 查询多个用户。
我正在使用 DirContext.search(base,filter,scope);在我的java程序中
到目前为止,它与一个值过滤器一起工作正常。 filter=("uid=name")
但我的要求是一次将多个名称传递给过滤器
filter=("uid=name1,name2,name3....") .
【问题讨论】:
如何从 LDAP 查询多个用户。
我正在使用 DirContext.search(base,filter,scope);在我的java程序中
到目前为止,它与一个值过滤器一起工作正常。 filter=("uid=name")
但我的要求是一次将多个名称传递给过滤器
filter=("uid=name1,name2,name3....") .
【问题讨论】:
LDAP 对其过滤器使用“PREFIX”表示法。
例如:
或条件
(|(attr1=val1)(attr2=val2)(attr1=val2))
AND条件
(&(attr1=val1)(attr2=val2)(attr1=val2))
在您的情况下,过滤条件如下:
filter = "(|(uid=name1)(uid=name2)(uid=name3))"
上述过滤器的意思是:
查找拥有
uid=name1ORuid=name2ORuid=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接近度:
(attribute~=abc),例如(displayName~=JohnDoe)*(~= 可能不兼容所有目录服务器!!)
通配符:例如(sn=J*) 或 (mail=*@example.com) 或 (givenName=*John*)
希望这会有所帮助!
【讨论】: