这个过滤器在我的LDAP浏览器中运行得很好,python ldap不会把它拿起来:
(&(!objectClass=computer)(sn=*%s*))
Run Code Online (Sandbox Code Playgroud)
导致:
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'}
Run Code Online (Sandbox Code Playgroud)
这是执行它的代码:
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()
Run Code Online (Sandbox Code Playgroud)
它可以很好地使用简单的过滤器,比如
filter = 'sn=*%s*' % search_string
Run Code Online (Sandbox Code Playgroud)
所以我猜这是某种在ldap lib中转义的东西,但是还找不到root.
| 归档时间: |
|
| 查看次数: |
6524 次 |
| 最近记录: |