自定义Django_rest_framework_jwt登陆错误返回

rest_framework_jwt自带的登录登录失败函数重写以及导用 在使用前后端分离开发做项目时,我们经常使用jwt_token,但是在我们登录失败时前端会直接报错状态码400,这时我们想到要定义登录成功和登录失败的返回体 这边会涉及到修改源码,注意修改页面避免不必要的错误 1.首先在我们项目settings中进行添加 2.自定义登录成功与登录失败返回体 3.登录成功返回体 4.通常我们在postman中自测的时候错误信息为{‘non_field_errors’:[‘无法使用提供的认证信息登录’]}当用户名或密码输入错误的时候不会去访问我们自定义的登录返回体所以需要我 阅读详情

自定义Django_rest_framework_jwt登陆错误返回

文章 :这位博主的方法是对的,但是修改源码,个人是非常不赞同的,我就自己按照这位博主重写了登录错误返回

# urls.py
# 这是我们的路由

from rest_framework_jwt import views

urlpatterns = [
    # 获取
    path('api-token-auth/', views.obtain_jwt_token),

    # 刷新
    path('api-token-refresh/', views.refresh_jwt_token),

    # 校验
    path('api-token-verify/', views.verify_jwt_token),
]

我发现jwt的返回都是由JSONWebTokenAPIView来控制的,我打算改一下里面的post方法

# utils.py

from rest_framework import status
from rest_framework.response import Response
from rest_framework_jwt.settings import api_settings
from rest_framework_jwt.views import JSONWebTokenAPIView, ObtainJSONWebToken, RefreshJSONWebToken, VerifyJSONWebToken
from datetime import datetime


class MyJSONWebTokenAPIView(JSONWebTokenAPIView):

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        if serializer.is_valid():
            user = serializer.object.get('user') or request.user
            token = serializer.object.get('token')
            response_data = jwt_response_payload_handler(token, user, request)
            response = Response(response_data)
            if api_settings.JWT_AUTH_COOKIE:
                expiration = (datetime.utcnow() +
                              api_settings.JWT_EXPIRATION_DELTA)
                response.set_cookie(api_settings.JWT_AUTH_COOKIE,
                                    token,
                                    expires=expiration,
                                    httponly=True)
            return response
        error_data = jwt_response_payload_error_handler(serializer, request)
        return Response(error_data, status=status.HTTP_200_OK)
      
      


def jwt_response_payload_handler(token, user=None, request=None):
    # 自定义返回 JWT
    return  {
        "msg": "success",
        "status": 200,
        "data": [{
        	# data自定义你接口想返回的信息
            'token': token,
            'username': user.username
        }]
    }

  

def jwt_response_payload_error_handler(serializer, request=None):

    return return {
        "msg": "用户名或者密码错误",
        "status": 400,
        "detail": serializer.errors
    }

      
      
      

class MyObtainJSONWebToken(ObtainJSONWebToken, MyJSONWebTokenAPIView):
    pass


class MyRefreshJSONWebToken(RefreshJSONWebToken, MyJSONWebTokenAPIView):
    pass


class MyVerifyJSONWebToken(VerifyJSONWebToken, MyJSONWebTokenAPIView):
    pass


obtain_jwt_token = MyObtainJSONWebToken.as_view()
refresh_jwt_token = MyRefreshJSONWebToken.as_view()
verify_jwt_token = MyVerifyJSONWebToken.as_view()

# urls.py

from apps.user.restful import utils

urlpatterns = [
    # 获取
    path('api-token-auth/', utils.obtain_jwt_token),

    # 刷新
    path('api-token-refresh/', utils.refresh_jwt_token),

    # 校验
    path('api-token-verify/', utils.verify_jwt_token),
]

这样就避免了修改源码,到时候云上不同步才是大坑

Django-rest-framework-JWT之(JWT原理解析及配置和错误解决) 文章目录Django-rest-framework-JWT之(JWT原理解析及配置和错误解决)1.测试工具2.JWT原理介绍3.Django-rest-framework-JWT安装配置及其错误处理4.测试 Django-rest-framework-JWT之(JWT原理解析及配置和错误解决) 1.测试工具 使用的Web接口测试工具:Postman 2.JWT原理介绍 JWT的介绍以及对比,参考... 阅读详情

相关推荐

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

在使用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), 'JW

django rest framework 自定义异常返回 包含message,code, data, result

自定义Response返回信息,但那个只用于正确的返回success,但是当我们用到了权限 auth 401、方法不允许method 405,等等,这时候我们就用自己自定义异常返回信息 1、定义settings配置文件 #定义异常返回的路径脚本位置 REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'common.utils.custom_execptio...

QQ群166477105Python技术群 5290

绿联NAS使用docker部署immich【pro系统】

随后去绿联你想要存放immich的地方创建一个文件夹,便于区分,如图,我创建了一个immich的文件夹。1.进入文件夹后面是有斜杠的(tips:只需要敲击前面几个字母,按tab键自动补全)cd:进入路径,1.可以是当前的下一层相对路径 2.也可以是完整的全路径。前言:好像没有绿联的教程,刚好自己也有需求,就顺便记录了。如果你的挂载实战情况比较复杂,接下来是喂到胃里的知识点。】下载文件(群晖的,别慌,能用),两份,红框的就是。首先,没什么好说的,去immich官网【点击1.终端,2.新增,3.确定。

weixin_45343644的博客 1781

自定义djangorestframework-jwt返回

一:前言 Django rest framework给我们提供了很强大的功能,由于自带的token认证没有过期时间,而且token数据是保存在数据库的,这样一来无疑是加大了对数据库的压力,所以这是我们就可以使用jwt认证,jwt认证全称为json web token,他是通过加密解密进行认证的,用户的信息全部保存在加密体中(当然不会对敏感信息进行存放),由前端发送用户信息给后台,后台将信息加密返回给前端,然后前端保存在本地,每次请求的时候带着这个加密数据进行请求,这样一来,对于服务器来说就不会有很大的压力,

qq_37794037的博客 1164

YOLOv8 TensorRT C++部署实战详解:从XMake构建到推理流水线

本项目实现了一个基于YOLOv8和TensorRT的高性能火灾烟雾检测系统,具有以下核心特点: 技术架构:采用TensorRT 8.6+进行GPU加速推理,结合CUDA 12.1和OpenCV 4.8+,实现高效计算机视觉处理。系统使用XMake替代CMake构建,配置更简洁高效。

hscing的博客 1066

【位运算进阶之----右移(>>)】

😄嘻嘻,朋友们,大家好!昨天我们学习了左移,今天我们来谈谈右移>>。⭐️简单来说,,也就是去掉一个数的二进制表达的末位,右移一位就去掉一位,右移两位就去掉两位。下面就让我们来详细看看吧!

weixin_73453526的博客 8931

djangorestframework-simplejwt

djangorestframework-simplejwt快速使用

python_web全栈 1万+

数据结构实验1.2—高精度计算PI值(西工大)

这是数据结构第二题的题目,是让我们根据用户的需求来计算派的值 这是题目的详细描述,刚看到这道题的时候,我是真的头大,完全没有思路,于是查找了一些大佬的笔记后才开始编写 这是我在写这些代码是所运用到的数学反三角函数幂次展开式的知识。 下面是正确的代码以及我的一些见解,和需要注意的一些地方。希望能对你有所帮助。如有更加精简的算法,请在评论区留下你的算法!!!谢谢!!! #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl

abcdef0623的博客 5831

Django rest framework之全局异常、封装Response对象、自动生成接口文档及JWT认证

文章目录1、全局异常1.1、使用方式1.2、案例1.3、REST framework定义的异常2、封装Response对象3、自动生成接口文档 1、全局异常 统一接口的返回方式,即便视图函数执行出错也能被捕获 1.1、使用方式 from rest_framework import status from rest_framework.response import Response from rest_framework.views import exception_handler # 定义一个函数 de

一切随心走的博客 2192

RedHat 9 替换yum源镜像

引言:我们个人通常使用的红帽系统yum源是需要注册付费的,所以在使用yum源安装一些软件时无法正常安装(例如:MySQL),这时我们就需要将yum源替换为CentOS对应的源,以实现在红帽系统中正常安装软件。

YUJIAOZHU666的博客 3739

【AI工具】Browser use搭建及使用的保姆级教程:让AI帮你自动操作浏览器

【AI工具】Browser use搭建及使用的保姆级教程:让AI帮你自动操作浏览器

funfan的博客 2536

Django Rest Framework的使用整理

Django Rest Framework 一、Rest Framework的基本介绍 程序的客户端有很多:硬件设备,游戏,APP,软件,其他的外部服务端。 1. Web应用模式 在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 这种情况下,前端页面中会出现很多涉及到服务端的模板语法。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-neat7OGD-1610381584965)(E:/Download/8-3

有用的话关个注,点个赞,收个藏🫶。 1509

虚拟电厂功率预测最佳实践白皮书

虚拟电厂(VPP)通过聚合分散的可再生能源资源,为电网提供可观测、可调度和可交易的解决方案。本文提出了一套功率预测方法论,并给出LSTM实现脚本,涵盖资源接入、数据治理、预测模型设计及市场交易闭环。针对风-光-储-负荷混合场景,该方法论强调轻量化部署和滚动优化,可有效提升预测精度和调度收益。未来研究将融合深度气象预报和强化学习,进一步优化VPP的协同调度能力。

专注AI大模型,软件混淆,授权 377

Django Rest Framework之认证组件

Django Rest Framework之认证组件一:认证组件源码二:认证组件的使用 一:认证组件源码 讲解DRF版本的时候我们都知道了,在dispatch方法里执行了initial方法来初始化我们的版本. 而在initial方法里有我们的认证、权限、频率组件,如下图 我们再点进去认证组件看看: 可以看到,我们的权限组件返回的是request.user,那么这里返回的request是新的还是...

500

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 247

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Django REST Framework 认证 - 权限 - 限制

一. 认证   (你是谁?)   REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案。 自定义Token认证   第一步 : 建表>>>>     定义一个用户表和一个保存用户Token的表 class UserInfo(models.Model): username = mod...

anzhehan1535的博客 190

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

django-rest-framework之 json web token方式完成用户认证

json web token的介绍:https://blog.youkuaiyun.com/kevin_lcq/article/details/74846723 1. 安装 $ pip install djangorestframework-jwt 2. 添加配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ...

aaron_0312的博客 167

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

django-rest:权限认证

认证: 确定用户是谁; 权限: 确定认证后的用户能做什么; django-rest认证权限流程: 1.认证。获取请求的用户与django自带的User数据库对比,把结果存到request.user和request.auth。 2.权限。根据request.user/request.auth和定义的权限(djnago自带或自定义的),确定能做什么,一般是指能调用那些视图功能。 dja...

qq_22208097的博客 310

jwt如何加盐_JWT原理和使用

jwt原理和使用JSON Web Tokens,是一种开发的行业标准RFC 7519,用于安全的表示双方之间的声明。目前,jwt广泛的用在系统的用户认证方面,特别是前后端分离项目。1.jwt认证流程在项目开发中,一般回按照上图所示的过程进行认证,即:用户登陆成功之后,服务端给用户浏览器返回一个token,以后用户浏览器要携带token再去向服务端发送请求,服务端校验token的合法性,合法则给用户...

weixin_39586683的博客 2266

Luffy之登录认证以及JWT

1.用户认证 在前面我们已经完成了,前端登录页面的搭建,以及路由分配,现在我们作关于登录认证部分的东西 Django提供了认证系统。认证系统包含: 用户 权限:二元(是/否)标志指示一个用户是否可以做一个特定的任务。 组:对多个用户运用标签和权限的一种通用的方式。 一个可配置的密码哈希系统 用户登录或内容显示的表单和视图 一个可...

weixin_30323961的博客 190

django-restframwork-jwt中的踩坑

jwt的配置 1.pip install djangorestframework-jwt 经过我的验证发现python3.6,django2.0环境下也能使用,官方文档应该是还未更新 django-restframwork的官方文档上使用的是pip install django-rest-framework-simplejwt,区别在于 jwt生成一个token,simplejwt生成一个acce...

weixin_43667829的博客 1060

django 用户认证之四:jwt用户认证

因为 restframework 的 token 认证存在一些缺陷,所以现在一般都使用 jwt 用户认证。   JWT全称 Json Web Token , 原理 : 服务器里面存储一个加密算法的 密匙, 然后有用户登陆时, 通过用户提供的信息, 用这个 密匙 生成一个 token 返回给 前端,前端把这个 token 保存到本地,然后下次请求 数据时带上这个 token ,后端获取到...

qq_26128879的博客 3499

drf-jwt

drf-jwt 官网 http://getblimp.github.io/django-rest-framework-jwt/ 安装子:虚拟环境 pip install djangorestframework-jwt 使用:user/urls.py from django.urls import path from rest_framework_jwt.views import obta...

weixin_38166689的博客 534

jwt登录

关于签发和核验JWT,我们可以使用Django REST framework JWT扩展来完成。使用下面的命令进行安装: pip install djangorestframework-jwt 下面这些在官方文档上都是有的,在settngs.dev.py中写入 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentica

weixin_42065178的博客 719

rest_framework11:jwt简单例子/自定制基于jwt认证类

jwt简单例子 一、登陆设置 1.不需要写login的视图类,使用jwt内置的。 2.需要前置条件,已有继承AbstractUser models,并且有数据,用于校验,返回token。 urls.py from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [ path('login/', obtain_jwt_token), ... ] 二、访问视图类设置 需要两者搭配,才能校验 .

winterye12的博客 435
上一篇: DRF-JTW
下一篇: pycharm 配置test --keepdb django单元测试,pycharm加速单元测试
Python_anning
博客等级 码龄9年 1409粉丝 27原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值