gpt4 book ai didi

python - Django 1.11 身份验证 set_unusable_password 与将密码设置为 None

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:23 24 4
gpt4 key购买 nike

我的团队在多年前覆盖了用户的身份验证方法,以针对 LDAP 而不是 djangos 模型后端进行身份验证。

此方法为用户查看 LDAP。如果用户存在并具有正确的用户名和密码,它会获取或创建用户(这意味着用户不必作为模型对象存在于 Django 数据库中就可以让某人登录)。

该方法将新创建的密码保留为无。然后设置所有其他信息。

我注意到他们在验证用户后,如果用户有效则调用用户的 set_unusable_password。在评论中,他们写道它覆盖了 Django 的内置密码处理……这显然是有道理的。但我不知道他们为什么需要这样做,因为我们已经覆盖了身份验证方法。

我通过删除 set_unusable_password 来测试这一点,这样密码就保留为 None 并且验证有效。他们仍然能够使用存储在 LDAP 上的密码登录。您仍然无法将模型中的密码覆盖为不同于 LDAP 上的密码并使用该密码登录。

所以基本上 set_unusable_password 调用除了创建一个密码之外没有任何效果......无论如何都没有使用。

我唯一能想到的是,它可能是旧版本 Django(我们现在是 1.11)中的一个问题的解决方案。

在源代码和文档中花费了大量时间后,我无法弄清楚为什么我们需要它。

为什么会在那里?写它的人现在已经离开了,所以我无法解释他们为什么这样做。如果我删除它,会有任何不良副作用吗?

最佳答案

如果您将密码设置为 None,您的代码可能会工作,但最好使用 set_unusable_password

密码无法使用的用户 are not allowed to request a password reset .如果您启用了 ModelBackend 和 LDAP 后端,则使用 password=None 的用户可以重置密码,然后使用模型后端登录。

关于python - Django 1.11 身份验证 set_unusable_password 与将密码设置为 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com