一.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
相关推荐
m0_6399069428 分钟前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
holly就是我1 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
鸿蒙开发1 小时前
共享 Schema 与 SchemaFactory
前端·后端·harmonyos
用户788477316341 小时前
小程序后端三选一:云开发、.NET WebAPI、Node,我按客户现状分了三种答案
后端
aiopencode1 小时前
局域网设备抓包怎么做?用 TraceEagle 抓电视、游戏机和 IoT 流量
后端·ios
智驭未来掌门人1 小时前
CLion 开发 Qt 项目的优势
后端
EnCi Zheng2 小时前
后端怎么把AI接口稳定安全低成本接进业务:超时重试、密钥隔离与成本熔断清单
人工智能·后端·安全·架构·api
Bazingga2 小时前
从一家酒店讲懂Docker
后端
南归北隐2 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
IT_陈寒2 小时前
刚解决一个 Java 并发问题,这坑踩得我怀疑人生
前端·人工智能·后端