2021-09-10 jwt的内置签发方式修改返回格式 jwt签发的源码分析 drf_jwt认证的token源码 自定义user表实现jwt的token签发 RBAC介绍 simple-ui的使用

本文深入分析了JWT的签发源码,探讨了如何在Django Rest Framework JWT中修改签发返回格式,并详细介绍了如何自定义User表以实现JWT token签发,同时讲解了自定义认证类以完成token认证。此外,还简单介绍了RBAC权限管理和simple-ui在后台管理系统中的应用。
摘要由CSDN通过智能技术生成

上节回顾

1 过滤的源码分析
	-视图类中配置类属性:filter_backends = ['过滤类']
    -必须继承他俩ListModelMixin+GenericAPIView
    -ListModelMixin的list方法中执行了self.filter_queryset,视图类
    -GenericAPIView找filter_queryset方法
    for backend in list(self.filter_backends):
       queryset = backend().filter_queryset(self.request, queryset, self)
        return queryset
    
    
2 分页类的源码分析
	-视图类中配置类属性: pagination_class = 分页类
    -必须继承他俩ListModelMixin+GenericAPIView
    -ListModelMixin的list方法中执行了
    page = self.paginate_queryset(queryset) # 分页
    if page is not None:
       serializer = self.get_serializer(page, many=True)
       return self.get_paginated_response(serializer.data)
    
    -GenericAPIView找paginate_queryset方法
    	#self.paginator配置的分页类的对象
    	self.paginator.paginate_queryset(queryset, self.request, view=self)
    -GenericAPIView找get_paginated_response方法
    	#self.paginator配置的分页类的对象
		self.paginator.get_paginated_response(data)
  -具体的分页类:PageNumberPagination
	-paginate_queryset
    -get_paginated_response
    
    
3 继承APIView实现分页
	-获取了所有数据
    -分页
    	-实例化得到分页对象
        -调用分页对象的paginate_queryset方法完成分页
        -把要分页的数据序列化
        -把序列化后的数据返回(直接返回和使用get_paginated_response)
        
4 自定义分页(出去面试,面试官问:如何自定义分页)
	-使用当此请求的request对象,取出获取的页码数
    -通过页码数和每页显示多少条,具体的取出当前页码的数据

5 jwt:json web token,是一种前后端的登录认证方式,它分token的签发和认证,签发的意思是用户登录成功,生成三段式的token串;认证指的是用户访问某个接口,需要携带token串过来,我们完成认证
6 三段:头.荷载.签名,每一段都通过base64编码
7 base64的编码和解码
8 djangorestframework-jwt:好久没维护了,使用djangorestframework-simplejwt
9 快速使用
	-快速签发
    	-在路由中(登录功能有了,基于auth的user表实现的登录)
        path('login/', obtain_jwt_token)
    -快速认证
    	-在视图类中配置
        authentication_classes = [JSONWebTokenAuthentication, ]#drf_jwt
    	permission_classes = [IsAuthenticated] # drf

今日内容

1 jwt内置签发方法修改返回格式(***)

# 写一个函数
def jwt_response_payload_handler(token, user=None, request=None):
    return {
   
        'token':token,
        'username':user.username
    }
# 在配置文件中配置
#drf_jwt的配置文件(drf_jwt有个默认配置文件:from rest_framework_jwt import settings)
from rest_framework_jwt.utils import jwt_response_payload_handler
JWT_AUTH={
   
    'JWT_RESPONSE_PAYLOAD_HANDLER':'app01.utils.jwt_response_payload_handler'
}

1.2 jwt签发的源码分析

# 路由的---》obtain_jwt_token---》ObtainJSONWebToken.as_view()---》视图类ObtainJSONWebToken----》
class ObtainJSONWebToken(JSONWebTokenAPIView)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值