1
該過濾器由蟒蛇LDAP工作得很好,在我的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 lib內的東西,但無法找到根。
我想這是'!' 'objectClass'之前,奇怪的東西 – abolotnov
*虛構*的東西。沒有這樣的語法。 – EJP
我在Microsoft Technet上發佈了AD過濾器的準確語法。一定要意識到,微軟喜歡以錯誤的方式做事。 –