自定义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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
简单了解django索引的相关知识
Jul 17 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 Python
浅谈pytorch中的dropout的概率p
May 27 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
Python日志模块logging用法
Jun 05 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 cURL和Rolling cURL并发方式比较
2013/10/30 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
微信跳一跳python代码实现
2018/01/05 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
跟单文员的岗位职责
2013/11/14 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
中学生评语大全
2014/04/18 职场文书
合理化建议书范文
2015/09/14 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Python中rapidjson参数校验实现
2021/07/25 Python
全新239军机修复记
2022/04/05 无线电