我们有一个用户子集属于的OU组列表。某些用户属于多个OU组。
是否可以使用cfldap返回属于这个OU组列表中的一个或多个的所有用户?像这样:
<cfldap
name="user_info"
action="QUERY"
server="123.45.6.78"
attributes="displayName, givenName, memberOf"
start="dc=na,dc=company,dc=lan"
scope="subtree"
filter="(|(memberOf CONTAINS ou=OU001)(memberOf CONTAINS ou=OU002)(memberOf CONTAINS ou=OU003))"
username="#userName#"
password="#passWord#">
答案 0 :(得分:2)
您应该可以像这样设置过滤器
filter = "(|(memberOf=*ou=OU001*)(memberOf=*ou=OU002*)(memberOf*ou=OU003*))"
|
表示您使用OR
列表,而*
应作为通配符
另外,只是当您使用具有大量属性的标记时,我发现使用attributeCollection
来定义我传入标记的内容会更容易。这是个人对可读性的偏好,对性能没有影响。
<cfset stldap = {}>
<cfset stldap.name = "user_info">
<cfset stldap.action = "QUERY">
<cfset stldap.server = "123.45.6.78">
<cfset stldap.attributes = "displayName, givenName, memberOf">
<cfset stldap.start = "dc=na,dc=company,dc=lan">
<cfset stldap.scope = "subtree">
<cfset stldap.filter = "(|(memberOf=*ou=OU001*)(memberOf=*ou=OU002*)(memberOf*ou=OU003*))">
<cfset stldap.username = userName>
<cfset stldap.password = passWord>
<cfldap attributeCollection="#stldap#">