Search Active Directory搜索筛选器示例

Search Active Directory搜索筛选器示例,search,active-directory,ldap,openldap,Search,Active Directory,Ldap,Openldap,我找不到搜索过滤器的含义,这两个示例之间的区别 (&(objectClass=user)(sn=*)(bysUserName=*)(|(bysUserName={0})(cn={0}))) (&(|(bysUserName={0})(cn={0}))(objectClass=User)) 有人能帮我找出这两个过滤器吗?谢谢如果您对它们重新排序,我想您会看到不同之处: (&(objectClass=user)(sn=*)(bysUserName=*)(|(bysUser

我找不到搜索过滤器的含义,这两个示例之间的区别

(&(objectClass=user)(sn=*)(bysUserName=*)(|(bysUserName={0})(cn={0})))

(&(|(bysUserName={0})(cn={0}))(objectClass=User))

有人能帮我找出这两个过滤器吗?谢谢

如果您对它们重新排序,我想您会看到不同之处:

(&(objectClass=user)(sn=*)(bysUserName=*)(|(bysUserName={0})(cn={0})))

(&(objectClass=User)                     (|(bysUserName={0})(cn={0})))
第一个过滤器对第二个过滤器中不存在的
sn
(必须包含一些值)和
ByUserName
(相同的事情-必须包含一些值)具有附加的限制

基本上,
&
定义了一个条件,而
|
是一个运算符-因此第一个筛选器要求LDAP对象满足:

  • (1)
    objectClass
    必须是
    user
  • (2)
    sn
    必须包含某些内容(不能为空)
  • (3)
    ByUserName
    必须包含某些内容
  • (4)
    ByUserName
    cn
    必须与替换
    {0}
    占位符的值匹配

第二个过滤器只需要点(1)和(4)

Thx@marc\s来帮助您。对不起,我不明白你对第(4)点的意思。您能帮我更详细地理解这一点(4)吗?@Feres\u F:嗯,这里似乎发生了字符串替换,并且
{0}
将替换为一个值-如果我们假设返回的serach如下所示,则筛选器要求
byUserName
cn
与该值匹配:有5个LDAP条目具有sn和byUserName!=Null(包含一些像您前面所说的值),它们是用户实体。这里cn={0}???@Feres\u F的含义是什么:正如我试图解释的那样-过滤器要求设置
ByUserName
cn
。如果您在
ByUserName
中已经有一个值,那么就完美了!此条件始终为真,您在
cn
中的任何值都不会被考虑…感谢您的时间和帮助:)