JWT:如何在密码或用户名错误 Django REST 上实现我的自定义错误消息

Posted

技术标签:

【中文标题】JWT:如何在密码或用户名错误 Django REST 上实现我的自定义错误消息【英文标题】:JWT: How do I implement my custom error message on password or username is wrong Django REST 【发布时间】:2021-09-09 21:22:59 【问题描述】:

当用户在 Django Rest JWT 身份验证中输入错误密码时,我想实现我自己的自定义错误消息,目前默认错误消息是

  "detail": "No active account found with the given credentials"

我继承了 Token 获取序列化器为

class TokenPairSerializer(TokenObtainSerializer):
    default_error_messages = 
        'login_error': _('Username or Password does not matched .')
    

    @classmethod
    def get_token(cls, user):
        return RefreshToken.for_user(user)

    @classmethod
    def get_user_type(cls, user):
        if user.is_superuser:
            return 'super_user'
        elif user.is_student:
            return 'student_user'
        elif user.is_teacher:
            return 'teacher_user'

    def validate(self, attrs):
        data = super().validate(attrs)
        self.validate_user()
        refresh = self.get_token(self.user)

我不知道我需要在哪里覆盖错误消息以获得响应

    'login_error': _('Username or Password does not matched .')

任何帮助都会有所帮助。

【问题讨论】:

【参考方案1】:

如果您只需要更改默认错误消息,请覆盖 TokenObtainSerializer default_error_message 字典,并自定义 no_active_account 键。

源码:here

class CustomTokenObtainSerializer(TokenObtainPairSerializer):
    default_error_messages = 
        'no_active_account': 'Username or Password does not matched.'
    

【讨论】:

以上是关于JWT:如何在密码或用户名错误 Django REST 上实现我的自定义错误消息的主要内容,如果未能解决你的问题,请参考以下文章

当他从所有浏览器(Django-rest-auth,JWT)更改密码时如何注销用户?

Django JWT auth:如何获取用户数据?

django rest framework jwt 使用电子邮件和密码进行身份验证

DJANGO + JWT 令牌认证

使用 Django rest_framework_jwt,如何允许使用准时使用代码自动登录?

Drf令牌认证密码重置