gpt4 book ai didi

django - 使用 django.contrib.auth,我怎样才能让用户知道他们登录失败的原因?

转载 作者:行者123 更新时间:2023-12-04 05:39:17 24 4
gpt4 key购买 nike

我需要在登录尝试失败时显示一条错误消息,说明用户是否处于非事件状态、密码不正确或未找到用户。我正在针对 API 进行身份验证,因此我制作了一个自定义身份验证后端。目前,为了向客户端证明登录有效,我让它引发称为 UserNotFoundError、InactiveUserError 和 InvalidPasswordError 的异常。

我很确定这不是正确的方法,如果我想使用 Django 的 auth View ,我无论如何都无法捕获这些异常。

我假设我需要创建自己的身份验证 View 。但是,有没有更好的方法?

(我知道给出登录失败的原因并不安全,但我必须这样做。)

最佳答案

这是完全未经测试的,不能保证工作,但你可以按照这些方式尝试一些东西。此解决方案的唯一警告是您的后端必须是最后使用的身份验证后端(或唯一使用的)。

contrib.auth.views.authenticate 方法接受 authentication_form 的参数,这意味着您应该能够使用扩展 contrib.auth.forms.AuthenticationForm 的自己的表单覆盖它。这种形式就是调用后端的 authenticate() 方法。因此,在您的后端,您可以返回一些自定义对象,其中包含用户实例以及身份验证失败的“失败”状态和“失败原因”。

如果您的自定义对象处于失败状态,您可以抛出 ValidationError 异常,此时登录 View 不会对用户进行任何进一步处理。

还要确保您覆盖 form.get_user() 以便它返回实际的 User 实例,而不是您的自定义对象。

关于django - 使用 django.contrib.auth,我怎样才能让用户知道他们登录失败的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480051/

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