一.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
相关推荐
q***428217 分钟前
SpringBoot Maven快速上手
spring boot·后端·maven
Victor35629 分钟前
Redis(153)Redis的网络使用如何监控?
后端
码一行32 分钟前
Eino AI 实战:解析 PDF 文件 & 实现 MCP Server
后端·go
Victor35641 分钟前
Redis(152) Redis的CPU使用如何监控?
后端
P***84391 小时前
解决Spring Boot中Druid连接池“discard long time none received connection“警告
spring boot·后端·oracle
雨中散步撒哈拉1 小时前
17、做中学 | 初三下期 Golang文件操作
开发语言·后端·golang
倚肆1 小时前
Spring Boot CORS 配置详解:CorsConfigurationSource 全面指南
java·spring boot·后端
databook1 小时前
告别盲人摸象,数据分析的抽样方法总结
后端·python·数据分析
v***44671 小时前
springboot之集成Elasticsearch
spring boot·后端·elasticsearch
q***72191 小时前
Spring Boot(快速上手)
java·spring boot·后端