首页 文章

Django身份验证 - 如果LDAP身份验证失败,请不要继续使用ModelBackend

提问于
浏览
0

我为真实用户使用django_ldap_auth的LDAPBackend,为功能用户使用Django的ModelBackend . 但是,LDAPBackend为每个能够登录的人创建一个Django用户,我可以在Django数据库中为该用户设置密码 .

问题是,如果用户的LDAP身份验证失败,但成功对抗Django数据库,他可以登录 . 这不是一个理想的行为(我认为) .

但是,如果LDAP服务器由于任何原因不可用,这可能会派上用场,但前提是登录成功后,使用LDAP密码更新Django密码 .

我的问题是双重的:

  • 是否可以(使用我自己的后端或其他东西或使用django_ldap_auth本身)将正确的密码保存到Django数据库?

  • 如果没有,如果LDAP服务器可访问,用户存在于LDAP数据库中,但密码不匹配,即使该密码与Django数据库匹配,是否可能验证失败?

1 回答

  • 2

    来自the docs

    如果后端引发PermissionDenied异常,则身份验证将立即失败 . Django不会检查后面的后端 .

    因此,如果LDAP后端返回None,则Django将尝试使用Model后端进行身份验证 . 但是,如果它引发 PermissionDenied ,则登录将失败 .

相关问题