美文网首页
自定义Django_rest_framework_jwt登陆错误

自定义Django_rest_framework_jwt登陆错误

作者: sean_liu_01 | 来源:发表于2021-01-05 15:49 被阅读0次

在使用Django做前端后端项目时,登陆认证方法往往使用的是jwt_token,但是想自定义登陆成功和失败的返回体。

1.当用户名和密码正确就会生成token,返回response是调用的是JWT_RESPONSE_PAYLOAD_HANDLER,如果想自定义返回体就需要重写jwt_response_payload_handler函数。

在项目目录下settings.py中,添加JWT_RESPONSE_PAYLOAD_HANDLER。

JWT_AUTH={'JWT_EXPIRATION_DELTA':datetime.timedelta(seconds=6000),'JWT_RESPONSE_PAYLOAD_HANDLER':'Users.views.jwt_response_payload_handler',# 后面跟着你视图里定义函数}

自定义一个视图编辑jwt_response_payload_handler。

defjwt_response_payload_handler(token,user=None,request=None):"""

    设置jwt登陆返回的格式

    :param token:

    :param user:

    :param request:

    :return:

    """return{"msg":"success","status":200,"data":[{# data自定义你接口想返回的信息'token':token,'username':user.username}]}

现在的效果如下:

2. Django中jwt错误返回的是{"non_field_errors":["无法使用提供的认证信息登录。"]},当用户名或密码错误时,是不会去调用jwt_response_payload_handler,那么失败时调用的是什么函数了,JWT_RESPONSE_PAYLOAD_ERROR_HANDLER,但是发现这个方法并没有合到master分支,那么我们就需要手动给他合并进去。

我们打开/usr/local/lib/python3.6/site-packages/rest_framework_jwt/settings.py在IMPORT_STRINGS中添加JWT_RESPONSE_PAYLOAD_ERROR_HANDLER:

/usr/local/lib/python3.6/site-packages/rest_framework_jwt/views.py中修改:

我们在自己的视图里编写一个jwt_response_payload_error_handler函数

defjwt_response_payload_error_handler(serializer,request=None):return{"msg":"用户名或者密码错误","status":400,"detail":serializer.errors}

最后我们在我们项目的settings.py的JWT中添加错误返回的函数:

# jwt_token配置JWT_AUTH={'JWT_EXPIRATION_DELTA':datetime.timedelta(seconds=6000),# 登陆成功自定义 的返回结构'JWT_RESPONSE_PAYLOAD_HANDLER':'Users.views.jwt_response_payload_handler',# 登陆失败时自定义的返回结构'JWT_RESPONSE_PAYLOAD_ERROR_HANDLER':'Users.views.jwt_response_payload_error_handler',}

最后的样子就成为这样:

相关文章

  • 自定义Django_rest_framework_jwt登陆错误

    在使用Django做前端后端项目时,登陆认证方法往往使用的是jwt_token,但是想自定义登陆成功和失败的返回体...

  • Django rest framework使用jwt认证前后端分

    解决了跨域资源共享CORS,自定义认证方式,自定义登陆返回及自定义错误返回,返回中包含token过期时间。不更改源...

  • spring security 自定义处理登陆

    spring security 自定义处理登陆 pom 目录结构 配置类 自定义的登陆过滤器,继承Username...

  • j-spring-security-check 404

    在初学spring-security时开始了自定义登陆页面的的尝试,提交表单时发生了404错误,在网上搜索解决方法...

  • 31. 自定义错误

    31. 自定义错误 使用 New 函数创建自定义错误 创建自定义错误最简单的方法是使用 [errors]包中的 [...

  • Swift5.1学习随笔之错误处理Error

    开发中常见的错误 语法错误 逻辑错误 运行时错误(导致闪退) 自定义错误 Swift可以通过自定义Error协议来...

  • Error 泛型

    Error 异常处理 错误处理 错误类型 自定义错误 可以通过Error协议自定义运行时的错误信息 函数内部通过...

  • Python语法的常见错误和处理异常(下)

    我们继续之前的内容呗,进入Python语法的常见错误和处理异常的第二部分: 用户自定义错误和自定义抛出错误 自定义...

  • Swift中的Error处理

    错误类型 1、开发过程常见的错误 自定义错误 1、Swift中可以通过Error协议自定义运行时的错误信息 2、函...

  • 错误

    错误 错误类型表示 自定义error panic和recover

网友评论

      本文标题:自定义Django_rest_framework_jwt登陆错误

      本文链接:https://www.haomeiwen.com/subject/qkhwoktx.html