擅长:python、mysql、java
<p>在“WORKS”情况下,筛选字符串包含一个没有域的简单名称:</p>
<pre><code> (&(objectClass=user)(sAMAccountName=bobsmith))
</code></pre>
<p>在“不起作用”的情况下,您使用一个带有域的名称:</p>
<pre><code> (&(objectClass=user)(sAMAccountName=domain\serviceAccount)
</code></pre>
<p>除非转义,否则筛选器字符串中不允许使用字符<code>\</code>。</p>
<p>如何解决此问题取决于ldap服务器中的数据。或许是这样:</p>
<pre><code>criteria = '(&(objectClass=user)(sAMAccountName=%s))' % (
username if '\\' not in username else username.split('\\')[1])
</code></pre>
<p>或许是这样:</p>
<pre><code>criteria = '(&(objectClass=user)(sAMAccountName=%s))' % (
ldap.filter.escape_filter_chars(username))
</code></pre>