自定义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 相关文章推荐
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
利用Python复制文件的9种方法总结
Sep 02 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
python做接口测试的必要性
Nov 20 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
Django之form组件自动校验数据实现
Jan 14 Python
Python处理PDF与CDF实例
Feb 26 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
Python 多进程原理及实现
Dec 21 Python
深度学习tensorflow基础mnist
Apr 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
PHP调用三种数据库的方法(3)
2006/10/09 PHP
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
Python当中的array数组对象实例详解
2019/06/12 Python
简单的Python调度器Schedule详解
2019/08/30 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
公司员工安全协议书
2014/11/21 职场文书
介绍信模板
2015/01/31 职场文书
商务考察邀请函模板
2015/02/02 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
表扬信范文
2015/05/04 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL