【问题标题】:Django authentication - don’t continue to ModelBackend if LDAP auth failsDjango 身份验证 - 如果 LDAP 身份验证失败,请不要继续使用 ModelBackend
【发布时间】:2015-12-22 04:33:29
【问题描述】:

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

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

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

我的问题有两个:

  • 是否可以(使用我自己的后端或其他东西或使用 django_ldap_auth 本身)将正确的密码保存到 Django 数据库?
  • 如果不是,如果 LDAP 服务器可访问,用户存在于 LDAP 数据库中,但密码不匹配,即使该密码与 Django 数据库匹配,是否有可能验证失败?

【问题讨论】:

    标签: python django django-authentication


    【解决方案1】:

    来自the docs

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 2020-04-14
      • 2015-04-19
      • 2016-02-05
      • 1970-01-01
      相关资源
      最近更新 更多