首页 > 其他分享 >drf之jwt

drf之jwt

时间:2023-02-09 20:46:41浏览次数:48  
标签:base64 jwt 接口 --- token 文档 drf

接口文档

# 前后端分离
	-我们做后端,写接口
	-前端做前端,根据接口写app,pc,小程序
    	
	-作为后端来讲,我们很清楚,比如登录接口,api/v1/login/	---》是post请求,发送username,password编码方式json---》返回的格式{'code':100,"msg":"登录成功"}
    
    -后端人员,接口写完,一定要写接口文档
    
# 接口文档如何编写
	-1 使用word,md编写接口文档
	-2 使用第三方平台,编写我们的接口文档(非常多)---》收费
    	--https://www.showdoc.com.cn/item/index
	-3 公司自己使用第三方开源的搭建---》Yapi---》你如果想自己搭建
   		--https://zhuanlan.zhihu.com/p/366025001 
	-4 使用drf编写的接口,可以自动生成接口文档
    	-swagger---》drf-yasg---》官方推荐使用
        -coreapi----》咱们讲
    
# 使用coreapi自动生成接口文档步骤
	-1 安装
    	pip3 install coreapi -i https://pypi.tuna.tsinghua.edu.cn/simple/
	-2 配置路由
		from rest_framework.documentation import include_docs_urls
        path('docs/', include_docs_urls(title='xx项目接口文档')),
	-3 在视图类,方法上,写注释即可
    	-在类上加注释
    	-在类的方法上加注释
   	   	-在序列化类或表模型的字段上加,help_text,required。。。。
      
    -4 配置文件配置
    	REST_FRAMEWORK = {
     		'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
    	}
        
    -5 访问地址 http://127.0.0.1:8000/docs
            
# 接口文档,需要有的东西
        -描述
        -地址
        -请求方式
        -请求编码格式
        -请求数据详解(必填,类型)
        -返回格式案例
        -返回数据字段解释
        -错误码

image

jwt介绍和原理

Json web token (JWT)  就是web方向token的使用

JWT的构成三部分,每部分用.分割

例子:
  yJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

	-头:header
        声明类型:这里是jwt
       	 声明加密的算法:通常直接使用:HMAC SHA256
        公司信息...等
   -荷载:payload
    	-存放有效信息的地方;
        	-过期时间
           -签发时间
       		-用户id
           -用户名字。。。
   -签名:signature
    	-第一部分和第二部分通过秘钥+加密方式得到的
  
# jwt开发重点
	-登录接口---》签发token
 	认证类---》jwt认证

base64编码和解码

 import base64
 import json

dic = {'user_id': 1, 'username': "lqz"}


dic = json.dumps(dic)
print(dic)  # {"user_id": 1, "username": "lqz"}
#把这个字符串使用base64编码
res = base64.b64encode(dic.encode('utf8'))
print(res)  # b'eyJ1c2VyX2lkIjogMSwgInVzZXJuYW1lIjogImxxeiJ9'

注意:base64编码后,字符长度一定是4的倍数,如果不是,使用 = 补齐  = 不表示数据

解码:
    res=base64.b64decode('eyJ1c2VyX2lkIjogMSwgInVzZXJuYW1lIjogImxxeiJ9')
	print(res)  # b'{"user_id": 1, "username": "lqz"}'
    
base64 应用场景
	"""
	1.jwt 使用了base64
	2.网络中传输数据,也会经常使用base64
	3.网络传输中,有的图片使用base64编码
	"""

drf-jwt快速使用

# django+drf平台开了jwt这套,有两个模块
	-djangorestframework-jwt  ---》一直可以用
    -djangorestframework-simplejwt---》公司用的多
    -自己封装jwt签发和认证
 
使用步骤:
    -1 安装
    	pip3 install djangorestframework-jwt -i https://pypi.tuna.tsinghua.edu.cn/simple/
    -2 快速签发token---》登录接口,路由中配置
    from rest_framework_jwt.views import obtain_jwt_token
    	path('login/', obtain_jwt_token),
    -3 postman,向http://127.0.0.1:8000/login/发送post请求,携带username和password

drf-jwt定制返回格式

如果是基于auth的User表签发token,就可以不自己写了,但是登录接口返回的格式,只有token,不符合公司规范


# 使用步骤
	1.写个函数:jwt_response_payload_handler
        1 写个函数:jwt_response_payload_handler
        def jwt_response_payload_handler(token, user=None, request=None):
            return {
                'code': 100,
                'msg': '登录成功',
                'token': token,
                'username': user.username
                # 'icon':user.icon
            }
    2 配置一下 ,项目配置文件
    REST_FRAMEWORK = {
    'JWT_RESPONSE_PAYLOAD_HANDLER':
        'app01.jwt_response_payload_handler.jwt_response_payload_handler',
}
    
    3 使用postman测试,就能看到返回的格式了

jwt的认证类

以后接口要登录后才能访问使用
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from rest_framework.permissions import IsAuthenticated

1.在视图类上加一个认证类,一个权限类class BookView(ViewSetMixin, RetrieveAPIView):
    authentication_classes = [JSONWebTokenAuthentication]
    permission_classes = [IsAuthenticated]  # 登录用户有权限,不登录用户没权限

2.postman测试
        -请求头中key值叫Authorization
        -请求头的value值是:  jwt"空格"有效的token值

标签:base64,jwt,接口,---,token,文档,drf
From: https://www.cnblogs.com/zhanghong1229/p/17106976.html

相关文章

  • 接口文档 token发展史 jwt介绍和原理 drf-jwt快速使用
    目录昨日回顾认证权限频率全局异常处理接口文档接口文档编写drf自动生成接口文档cookies-session-token发展史jwt介绍和原理jwt的构成base64的编码和解码drf-jwt快速使用安......
  • drf从入门到飞升仙界 09
    接口文档#1.前后端分离-后端:写接口-前端:根据接口写app,小程序,pc端#2.作为后端开发-我们应该清楚:--->/api/v1/login/--->登录接......
  • drf(10)jwt
    1接口文档#前后端分离-我们做后端,写接口-前端做前端,根据接口写app,pc,小程序-作为后端来讲,我们很清楚,比如登录接口/api/v1/login/---->post---->us......
  • rest_framework_jwt源码分析
    rest_framework_jwt源码分析之序列化类序列化类classJSONWebTokenSerializer(Serializer):def__init__(self,*args,**kwargs): #这里是给序列化类的对象,添......
  • drf 断点调试,认证权限频率源码分析,基于APIView编写分页,异常处理
    昨日回顾#1认证的使用-有些接口需要登陆后才能访问-原生django如何使用的认证:auth的user表,auth自带了认证-自己登录,使用自定义的用户表-认证......
  • drf
    今日内容1.接口文档2.jwt介绍和原理3.drf-jwt快速使用4.定制返回格式5.jwt的认证类1.接口文档前后端分离 我们做后端,写接口前端做前端,根据接口写app,pc,小程序......
  • jwt用法
    JWT认证全称:Jsonwebtoken(JWT)主要用于web方向token的使用JWT由来https://www.cnblogs.com/liuqingzheng/p/8990027.htmltoken的签发认证流程JWT的构成#分为三......
  • 接口文档、jwt介绍和原理、drf-jwt快速使用、定制返回格式、jwt的认证类
    目录1接口文档2jwt介绍和原理3drf-jwt快速使用4定制返回格式5jwt的认证类1接口文档#前后端分离 -做后端,写接口-前端做前端,根据接口写app,pc,小程序......
  • drf-8
    原生django的cookie+session认证底层原理断点调试使用#程序是debug模式运行,可以在任意位置停下查看当前情况下变量数据的变化情况#pycharm来调试程序-以debug形......
  • jwt、coreapi自动生成接口文档
    上节回顾#1认证类的执行流程---》源码分析 -请求进来---》路由匹配成功----》执行path('test/',view.BookView.as_view()),--->继承了APIView----》APIView的as_view(......