自定义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实现图片文字同时提交的方法
May 26 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
24式加速你的Python(小结)
Jun 13 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
python3实现Dijkstra算法最短路径的实现
May 12 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
大师制作的中短波矿石收音机
2020/04/02 无线电
php 使用html5实现多文件上传实例
2016/10/24 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
python实现哈希表
2014/02/07 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python九九乘法表的实例
2017/09/26 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
给物业的表扬信
2014/01/21 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
实践单位评语
2014/04/26 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
安全生产工作汇报
2014/10/28 职场文书
自我评价优缺点范文
2015/03/11 职场文书
飞越疯人院观后感
2015/06/09 职场文书
小学体育课教学反思
2016/02/16 职场文书