一.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. 解密进行签名验证

    python 复制代码
    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
相关推荐
IT_陈寒1 小时前
JavaScript性能飞跃:5个V8引擎优化技巧让你的代码提速300%
前端·人工智能·后端
Victor3561 小时前
Redis(61)Redis的连接数上限是多少?
后端
不学习何以强国1 小时前
Cool Unix + OpenAuth.Net 实现一款校园小程序的开发
mysql·前端框架·asp.net
Victor3561 小时前
Redis(60) Redis的复制延迟如何优化?
后端
.格子衫.7 小时前
Spring Boot 原理篇
java·spring boot·后端
兮动人10 小时前
Spring Bean耗时分析工具
java·后端·spring·bean耗时分析工具
华洛10 小时前
公开一个AI产品的商业逻辑与设计方案——AI带来的涂色卡自由
前端·后端·产品
追逐时光者10 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 57 期(2025年10.1-10.12)
后端·.net
今天头发还在吗11 小时前
【React】动态SVG连接线实现:图片与按钮的可视化映射
前端·javascript·react.js·typescript·前端框架
szial11 小时前
为什么 React 推荐 “不可变更新”:深入理解 React 的核心设计理念
前端·react.js·前端框架