## 注意
`LDAP`在匹配`DN`方面相当灵活。 `LDAPBackend`通过在创建Django用户时强制用户名变为小写,并在认证时修剪空白来努力解决这个问题。
一些`LDAP`服务器被配置为允许用户在没有密码的情况下进行绑定。为防止误报,`LDAPBackend`将立即拒绝任何带有空密码的身份验证尝试。您可以通过将`AUTH_LDAP_PERMIT_EMPTY_PASSWORD`设置为`True`来禁用此行为。
默认情况下,所有`LDAP`操作都使用`AUTH_LDAP_BIND_DN`和`AUTH_LDAP_BIND_PASSWORD`凭证执行,而不是用户的。否则,LDAP连接将在登录请求期间作为身份验证用户绑定,并在其他请求期间作为默认凭据绑定,因此您可能会看到不一致的`LDAP`属性,具体取决于Django视图的性质。如果您愿意接受不一致性,以便在绑定为身份验证用户时检索属性,请参阅`AUTH_LDAP_BIND_AS_AUTHENTICATING_USER`。
默认情况下,`LDAP`连接是未加密的,不会尝试保护敏感信息,如密码。当与本地主机上或本地网络上的`LDAP`服务器进行通信时,这可能没有问题。如果您需要到LDAP服务器的安全连接,则可以使用`ldaps:// URL`或启用StartTLS扩展。后者通常是首选机制。要启用`StartTLS`,请将`AUTH_LDAP_START_TLS`设置为`True`:
`AUTH_LDAP_START_TLS = True`
如果`LDAPBackend`从`python_ldap`收到`LDAPError`,它通常会吞下它并记录警告。 如果您想对这些异常执行任何特殊处理,则可以将信号处理程序添加到`django_auth_ldap.backend.ldap_error`。 信号处理程序可以任何你喜欢的方式处理异常,包括重新提升异常或其他异常。