【问题标题】:Django - Error Message in Custom Auth BackendDjango - 自定义身份验证后端中的错误消息
【发布时间】:2011-04-02 15:05:29
【问题描述】:

我通过扩展默认的 ModelBackend 编写了一个自定义身份验证后端。是否可以向登录屏幕发送自定义错误消息?截至目前,它正在显示默认消息。

【问题讨论】:

    标签: django django-authentication django-login


    【解决方案1】:

    你可以引发 django ValidationError

    from django.core.exceptions import ValidationError
    
    raise ValidationError("Some custom message")
    

    然后你可以显示它:

    {{ form.non_field_errors|striptags }}
    

    【讨论】:

    • 请注意,根据Django docs,您的后端应具有以下功能; “检查它获得的凭据,如果凭据有效,它应该返回一个与这些凭据匹配的用户对象。如果它们无效,它应该返回 None”。不确定您是否建议在后端提出ValidationError,但我只是把它放在那里。
    • @Bono,尽管您是对的(而且我喜欢您的音乐),但面对不得不实现自己的表单的替代方案,只需在 auth 方法中引发 ValidationError 非常简单并且可以正常工作。
    • (当然,我们的想法不是在用户输入“错误”凭据时抛出这个,因为这些凭据与现有用户不匹配,但在某种意义上是“错误”由于与此特定身份验证后端相关的一些其他验证逻辑而被视为无效)
    【解决方案2】:

    错误消息以ValidationError 引发的django.contrib.auth.forms.AuthenticationForm 异常的形式出现。您需要扩展身份验证表单或实现自己的身份验证表单以更改其错误消息。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2021-02-06
      • 2016-01-20
      • 2015-09-09
      • 2021-12-09
      • 2015-07-31
      • 2019-01-23
      • 1970-01-01
      • 2016-11-07
      相关资源
      最近更新 更多