python ldap“;“错误搜索筛选器”;错误

python ldap“;“错误搜索筛选器”;错误,ldap,Ldap,此过滤器在python的“我的LDAP浏览器”中工作正常LDAP不会拾取它: (&(!objectClass=computer)(sn=*%s*)) 导致: Request Method: GET Request URL: http://localhost:8000/ldap_find/%D0%B1%D0%BE%D0%BB%D0%BE%D1%82/ Django Version: 1.4 Exception Type: FILTER_ERROR Exception Value: {'d

此过滤器在python的“我的LDAP浏览器”中工作正常LDAP不会拾取它:

(&(!objectClass=computer)(sn=*%s*))
导致:

Request Method: GET Request
URL: http://localhost:8000/ldap_find/%D0%B1%D0%BE%D0%BB%D0%BE%D1%82/
Django Version: 1.4
Exception Type: FILTER_ERROR
Exception Value: {'desc': 'Bad search filter'}
下面是执行此操作的代码:

try:
    LDAPClient.connect()
    base = AUTH_LDAP_SEARCH_BASE
    scope = ldap.SCOPE_SUBTREE
    filter = '(&(!objectClass=computer)(sn=*%s*))' % search_string
    result_set = list()
    result = LDAPClient.client.search(base.encode(encoding='utf-8'), scope, filter.encode(encoding='utf-8'),['cn','mail'])
    res_type, res_data = LDAPClient.client.result(result)
    for data in res_data:
        if data[0]:
            result_set.append(data)
    return json.dumps(result_set)
except Exception, e:
    raise e
finally:
    LDAPClient.unconnect()
它适用于简单的过滤器,如

filter = 'sn=*%s*' % search_string

所以我猜这是对ldap库的某种转义,或者是ldap库中的某种转义,但是还找不到根。

搜索筛选器语法不正确。使用
(&(sn=*%s*)(!(objectClass=computer))
。和中详细记录了搜索筛选器。

搜索筛选器语法不正确。使用
(&(sn=*%s*)(!(objectClass=computer))
。搜索过滤器在和中有很好的文档记录。

我想这就是“!”在“对象类”之前,奇怪的东西是虚构的。没有这样的语法。我在一篇微软Technet发布的广告过滤器文章中发现了这种虚构的语法。请始终注意,Microsoft喜欢以错误的方式进行操作。我遇到的问题是在筛选器的括号之间有一个逗号,如:(&(objectClass=*),(sn=*%s*))#在中间删除逗号我想这是“!”在“对象类”之前,奇怪的东西是虚构的。没有这样的语法。我在一篇微软Technet发布的广告过滤器文章中发现了这种虚构的语法。请始终注意,Microsoft喜欢以错误的方式进行操作。我遇到的问题是在筛选器的括号之间有一个逗号,如下所示:(&(objectClass=*),(sn=*%s*)#删除中间的逗号