## 后端
`django_auth_ldap.backend.populate_user`
这是客户端应该执行用户对象的额外定制时发送的`Django`信号。 它是在用户通过身份验证并且后端完成填充之后发送的,并且在它被保存之前发送。 客户可以借此机会填充其他模型字段,可能基于`ldap_user.attrs`。 该信号有两个关键字参数:`user`是`User`对象,`ldap_user`与`user.ldap_user`相同。 发件人是`LDAPBackend`类。
`django_auth_ldap.backend.ldap_error`
这是我们收到`ldap.LDAPError`异常时发送的`Django`信号。 信号有三个关键字参数:
上下文:“`authenticate`”,“`get_group_permissions`”或“`populate_user`”之一,指示捕获异常时调用哪个`API`。
用户:正在处理的`Django`用户(如果可用)。
异常:`LDAPError`对象本身。
发件人是`LDAPBackend`类(或子类)。
类`django_auth_ldap.backend.LDAPBackend`
LDAPBackend有一个可以直接调用的方法,有几个可以在子类中重写。
`settings_prefix`
我们所有的`Django`设置的前缀。默认情况下,这是`'AUTH_LDAP`_',但子类可以覆盖这个。当不同的子类使用不同的前缀时,它们都可以独立安装和运行。
默认设置
一个默认设置的字典。在`LDAPBackend`中这是空的,但子类可以使用将覆盖内置的默认值的值来填充它。请注意,这些键应该省略“`AUTH_LDAP_`”前缀。
`populate_user(username)`
为给定的`LDAP`用户名填充`Django`用户。这将使用默认凭据连接到`LDAP`目录,并尝试填充指定的`Django`用户,就像他们刚刚登录一样。`AUTH_LDAP_ALWAYS_UPDATE_USER`被忽略(假定为`True`)。
`get_user_model(self)`
返回`get_or_build_user()`将实例化的用户模型。默认情况下,自定义用户模型将被尊重。为了替代代理模型,子类很可能会覆盖这个。
`authenticate_ldap_user(self, ldap_user, password)`
给定一个`LDAP`用户对象和密码,认证用户并返回一个`Django`用户对象。请参阅定制认证。
`get_or_build_user(self, username, ldap_user)`
给定一个用户名和一个`LDAP`用户对象,这必须返回一个有效的`Django`用户模型实例。 `username`参数已经通过`ldap_to_django_username()`传递。 您可以通过`ldap_user.dn`和`ldap_user.attrs`获取有关`LDAP`用户的信息。 返回值必须与`get_or_create()`相同 - 一个(实例,创建的)二元组 - 虽然实例不需要保存。
默认的实现是用大小写不敏感的查询来查找用户名。 如果找不到,`get_user_model()`返回的模型将使用小写的用户名创建。 直到发送了`django_auth_ldap.backend.populate_user`信号之后,新用户才会被保存到数据库中。
一个子类可以重写这个以使`LDAP`用户以任何喜欢的方式关联到`Django`用户。
`get_or_create_user(self, username, ldap_user)`
警告
已过时。 这是支持向后兼容,但将在未来版本中删除。
像`get_or_build_user()`一样,但始终返回保存的模型实例。 如果你重写这个,请转换为新的方法。
`ldap_to_django_username(username)`
根据给定的LDAP用户名(这是用户输入的内容)返回一个有效的Django用户名。 默认情况下,用户名将保持不变。 这可以被子类覆盖。
`django_to_ldap_username(username)`
`ldap_to_django_username()`的逆函数。 如果这与`ldap_to_django_username()`不对称,则行为是未定义的。