自定义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 相关文章推荐
Python编程之属性和方法实例详解
May 19 Python
python动态参数用法实例分析
May 25 Python
pyenv命令管理多个Python版本
Mar 26 Python
pandas的object对象转时间对象的方法
Apr 11 Python
详解python分布式进程
Oct 08 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python基于read(size)方法读取超大文件
Mar 12 Python
Django权限设置及验证方式
May 13 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python实现自动玩连连看的脚本分享
Apr 04 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
Highcharts入门之简介
2016/08/02 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现的RSS阅读器实例
2015/07/25 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
Pandas的Apply函数具体使用
2020/07/21 Python
python类共享变量操作
2020/09/03 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
北大自主招生自荐信
2013/10/19 职场文书
土木工程毕业生推荐信
2013/10/28 职场文书
最新教师自我评价分享
2013/11/12 职场文书
车辆工程专业求职信
2014/04/28 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
安全教育片观后感
2015/06/17 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
导游词之崇武古城
2019/10/07 职场文书
创业计划书之网吧
2019/10/10 职场文书