自定义Django_rest_framework_jwt登陆错误返回的解决


Posted in Python onOctober 18, 2020

在使用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

def jwt_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
    }]
  }

现在的效果如下:

自定义Django_rest_framework_jwt登陆错误返回的解决 

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.pyIMPORT_STRINGS中添加JWT_RESPONSE_PAYLOAD_ERROR_HANDLER:

自定义Django_rest_framework_jwt登陆错误返回的解决

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

自定义Django_rest_framework_jwt登陆错误返回的解决

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

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

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

# 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_rest_framework_jwt登陆错误返回的解决的文章就介绍到这了,更多相关Django_rest_framework_jwt登陆错误内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
python如何使用unittest测试接口
Apr 04 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
python 异或加密字符串的实例
Oct 14 Python
Falsk 与 Django 过滤器的使用与区别详解
Jun 04 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
Python字典dict常用方法函数实例
Nov 09 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
如何利用python读取micaps文件详解
Oct 18 #Python
Python中Yield的基本用法
Oct 18 #Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 #Python
Python通过format函数格式化显示值
Oct 17 #Python
Python如何使用vars返回对象的属性列表
Oct 17 #Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 #Python
Python基于locals返回作用域字典
Oct 17 #Python
You might like
晶体管单管来复再生式收音机
2021/03/02 无线电
php eval函数一句话木马代码
2015/05/21 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
Python中调用其他程序的方式详解
2019/08/06 Python
Python实现TCP通信的示例代码
2019/09/09 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
营业员实习自我鉴定
2013/12/07 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
小学生毕业评语
2014/12/26 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
导游词之河北野三坡
2019/12/11 职场文书
详解Vue的options
2021/05/15 Vue.js