我为真实用户使用django_ldap_auth的LDAPBackend,为功能用户使用Django的ModelBackend。但是,LDAPBackend为每个能够登录的人创建一个Django用户,我可以在Django数据库中为该用户设置密码。
问题是,如果用户的LDAP身份验证失败,但是对Django数据库成功,他可以登录。这不是一个理想的行为(我认为)。
但是,如果LDAP服务器由于任何原因不可用,这可能会派上用场,但只有在成功登录时才能使用LDAP密码更新Django密码。
我的问题有两个:
答案 0 :(得分:2)
来自the docs:
如果后端引发
PermissionDenied
异常,则身份验证将立即失败。 Django不会检查后面的后端。
因此,如果LDAP后端返回None,则Django将尝试使用Model后端进行身份验证。但是,如果它引发PermissionDenied
,则登录将失败。