首页 > 其他分享 >jwt基础(01)

jwt基础(01)

时间:2023-02-13 23:15:47浏览次数:48  
标签:01 jwt base64 基础 JWT 认证 token 使用

jwt基础

目录

1 jwt介绍和原理

cook session token 发展史

JWT全称: json web token(JWT) 就是web方向token的使用

JWT的构成三部分 每部分用 . 分隔

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

第一部分: header 头

声明类型,这里是JWT

声明加密的算法 通常直接使用HMAC SHA256

公司信息....

第二部分: payload 荷载

存放有效信息的地方

过期时间

签发时间

用户id

用户名字

第三部分: signature, 签名

第一部分和第二部分通过密钥+加密方式(HAMC SHA256)得到

jwt开发重点

登录接口---> 签发token

认证类-->jwt认证

base64编码和解码

import base64
import json
dic =  {'user_id':1 ,'username':'wei'}

dic_str = json.dumps(dic)

# 把这个字符串使用base64编码
res = base64.64encode(dic_str.encode('utf-8'))
print res

# 注意 :base64编码后, 字符长度一定是4的倍数,如果不是,使用 = 补齐  = 不表示数据
# 解码
res = base64.b64decode('TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ=')
print(res)

bas464应用场景

  • jwt 使用了base64
  • 网络中传输数据,也会经常使用 base64编码
  • 网络传输中有的图片 使用base64编码

drf-jwt快速使用

django+drf平台开发jwt这套东西,有两个模块
djangorestframework-jwt–>虽然年久失修,官网不支持django4.x了但是其中底层实现原理都是一样的
djangorestframework-simplejwt---》公司用的多

自己封装jwt签发和认证

使用步骤

  1. 安装

  2. 快速签发token->登录接口,路由配置

    使用django,user表实现快速认证

path('login/', obtain_jwt_token)
  1. postman测试

    向http://127.0.0.1:8000/login/发送post请求,携带username和password
    

定制返回格式

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

使用步骤

1.写个函数jwt_response_payload_handler

def jwt_response_payload_handler(token, user=None, request=None):
    return {
        'code': 100,
        'msg': '登录成功',
        'username': user.username,
        'token':token
    }

2.配置项目配置 新建utils.py

JWT_AUTH = {
    'JWT_RESPONSE_PAYLOAD_HANDLER':'app01.utils.jwt_response_payload_handle'
}

3.使用postman测试就可以看到自定义的返回了

2987368-20230209221230153-862782815

jwt认证类

以后接口要登录后才能访问使用

  1. 在视图类上加一个认证类, 一个权限类class

    from rest_framework_jwt.authentication import JSONWebTokenAuthentication
    
    class BookViewDetail(GenericViewSet, RetrieveAPIView):
        authentication_classes = [JSONWebTokenAuthentication]
    
  2. postman测试

    请求体中key值叫Authorization

    请求头的value值是:jwt有效的token 中间有空格

    2987368-20230209221230152-1271997939

标签:01,jwt,base64,基础,JWT,认证,token,使用
From: https://www.cnblogs.com/wei0919/p/17118211.html

相关文章

  • 1.html篇之《html基础入门》
    html基础入门1.什么是htmlHypertextMarkupLanguage超文本标记语言2.基本结构<!DOCTYPEhtml><!--注释:此为html5的声明方式--><html><head></head><body></b......
  • 《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用
    《Terraform101从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。简介Azure是微软的公有云,它......
  • spark基础(1)
    将相同国家进行分组,然后将count相加sum(count),对sum(count)进行排序,输出top5valpath="/Volumes/Data/BigData_code/data/flight-data/csv/2015-summary.csv"va......
  • MySQL基础
    基础篇通用语法及分类DDL:数据定义语言,用来定义数据库对象(数据库、表、字段)DML:数据操作语言,用来对数据库表中的数据进行增删改DQL:数据查询语言,用来查询数据库中......
  • [CSP-S2019] Emiya 家今天的饭
    题解P5664这道题非常水,段誉初二就切了,但是我初中DP学的非常差,基本什么都不会,见到的小套路能会一个算一个吧。直接计算比较困难,尝试使用DP求出不合法的方案数即......
  • 前端之——vue day01 入门
    DRF重点序列化类视图组件路由写法三大认证jwt一、前端发展历史1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->......
  • vue基础:前端发展历史、Vue的介绍的基本使用
    目录一、前端发展历史二、Vue的介绍的基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用一、前端发展历史......
  • vue-day01——前端发展历史、vue的介绍及基本使用
    目录前端之Vue框架一、前端发展历史二、Vue的介绍及基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用前......
  • Pytorch快速使用手册 01基本配置
    importosimporttqdmimporttorchimportrandomimportshutilimportnumpyasnp1.BaseConfig1.1Checkversionofpytorchprint("torchversion",torch.__......
  • JAVA-studyDay01
    JAVAjava-day01一.java简介1991年Sun公司的JamesGosling等人开始开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为J......