企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 用户对象 对外部源的认证是膨胀的,但`Django`的认证模块紧紧地绑定到用户模型。当用户登录时,我们必须创建一个模型对象来在数据库中表示它们。由于`LDAP`搜索不区分大小写,因此默认实现还使用`iexact`查询搜索现有的`Django`用户,并使用小写用户名创建新用户。如果你想覆盖这个行为,请参阅`get_or_build_user()`。如果您想替换代理模型,请参阅`get_user_model()`。 默认情况下,使用用户模型的`USERNAME_FIELD`对现有用户进行查找。要查看其他字段,请使用`AUTH_LDAP_USER_LOOKUP_FIELD`。设置时,用户名字段将被忽略。 当使用默认查找时,用户唯一必需的字段是用户名。默认的用户模型可以挑选用户名中允许的字符,所以`LDAPBackend`包含一对钩子`ldap_to_django_username()`和`django_to_ldap_username()`,用于在LDAP用户名和Django用户名之间进行转换。例如,如果您的`LDAP`名称中包含句点,则可能需要此选项。你可以继承`LDAPBackend`来实现这些钩子;默认情况下,用户名不会被修改。通过`LDAPBackend`进行身份验证的用户对象将具有包含原始(`LDAP`)用户名的`ldap_username`属性。用户名(或者`get_username()`)当然是`Django`的用户名。 **注意** 由`LDAPBackend`创建的用户将设置不可用的密码。 这只会在创建用户时才会发生,所以如果您在`Django`中设置了有效的密码,那么即使用户被LDAP拒绝,用户也将能够通过`ModelBackend`(如果已配置)登录。 通常不建议这样做,但是在`LDAP`服务器不可用的情况下,它可以作为选定用户的自动防故障功能。