当前位置: 首页 > news >正文

一.jwt token 前后端的逻辑

摘要

jwt token 前后端的交互逻辑,此部分只描述了一些交互逻辑,不涉及到真实应用的开发。

token的格式

token=header+‘.’+payload+‘.’+sign

第一次登陆的时候

  1. 判断http请求头中是否包含Authorization
  2. 不包含则提示用户未登录
  3. 当用户登录后,后端生成token返回给前端,生成token逻辑如下
  1. 生成header
    header = {
    “alg”: “DES”,
    “typ”: “JWT”
    }
    header_str_64 = base64.encode(header_str)
  2. 生成payload
    payload = {
    “user_id”:“xx”,
    “effective_time”:“过期时间”
    }
    payload_str_64 = base64.encode(header_str)
  3. 对payload_str_64进行AES加密生成签名
    sign=generateSign(payload_str_64)
  4. 生成token
    token=header_str_64 + ‘.’ + payload_str_64 + ‘.’ + sign

后端token校验

  1. 获取Authorization 中的token

  2. 解密进行签名验证

    header_str_64 ,payload_str_64 ,sign=token.split(',')
    #根据请求头中的payload_str_64反向生成签名
    #生成的签名和token携带的签名进行比对
    #相等则信息检验成功,不相等则表示信息被篡改
    sign_now=generateSign(payload_str_64)
    if sign_new==sign:print("信息校验通过")payload_str = base64.decode(payload_str_64)payload = json.loads(payload_str)	payload['effective_time'] = str(app_obj.expire_time)if '当前时间' > effective_time:data = {'status_code': 401,'message': 'authorization已过期,请找管理员续时长'}        	
    else:return '信息被篡改'
    

如何进行token自动续时

前面 伪代码 我们的token设计中加入了 effective_time过期时间,在进行用户校验的时候如果token过期了则返回给用户 ‘authorization已过期,请找管理员续时长’,这样做是有缺点的,比如我正在操作一个任务,刚创建好还未保存token过期了,是不是很尴尬,因此实现token自动续时长是很有必要的。就是当用户处于活跃状态的时候实现token自动续时长。

  1. 前端将登陆后获取到的token缓存到本地
  2. 每个五分钟检查下token的effective_time时间
  3. 如果过期了则调用后端接口,后端接口会返回新的token
  4. 前端更新本地缓存,替换旧的token
http://www.lryc.cn/news/311421.html

相关文章:

  • day12_oop_抽象和接口
  • linux 将 api_key设置环境变量里
  • java八股文复习-----2024/03/03
  • UE4 Niagara 关卡3.4官方案例解析
  • C# Onnx segment-anything 分割万物 一键抠图
  • Linux配置网卡功能
  • 【C++】十大排序算法之 归并排序 快速排序
  • x-pack的破解方式和免费jar包!!可直接用!!
  • 最新版本,Midjourney保姆级教程!
  • Android中的几种定位方式调用详解
  • 【软件测试】接口调不通排查分析+常遇面试题总结
  • c++基础学习第三天(指针,结构体)
  • 【数仓】zookeeper软件安装及集群配置
  • Qt 实现橡皮擦拭显示图片
  • Vue3+Element-Plus中ELMessage样式丢失处理
  • 97 spring 中的泛型类型注入
  • C++设计模式
  • 反向代购业务系统|无货源代购中国商品|反向海淘代购系统
  • Linux 进程间通信
  • hippy 调试demo运行联调-mac环境准备篇
  • 【golang】go module依赖的git tag被覆盖 如何处理 | 因测试产生大量的git tag 如何清除 最佳实践
  • Spring Cloud原理详解
  • 力扣76. 最小覆盖子串(滑动窗口)
  • 使用华为云云函数functiongraph
  • Android logcat系统
  • android 使用协程CoroutineScope 实现定时器
  • 【algorithm】算法基础课---排序算法(附笔记 | 建议收藏)
  • UnityShader——09数学知识3
  • langchain学习笔记(九)
  • 周处除三害在线资源最新电影1080p高清