自动续期 双token流程

embedded/2024/12/22 20:25:17/

为什么需要自动续期

从状态维护说起 http是一个无状态协议 必须靠一些 特定的技术 实现状态的维护 传统web中 session

过程 浏览器输入用户名密码 后端 获取参数 校验登录成功

存储在内存中 否则 后返回 sessionid 浏览器通过 cookie存储 内存存一个sessionid 用户后续请求 都携带 jssionid 后端去和内存的

sessionid 进行比对

只要后续 用户发送的任何请求 携带好这个token 后端就认为其是合法请求

断开连接的情况 1 用户在浏览器 手动删除了这个 jssionid

服务器 内存中的 sessionid 可能会 自动删除

多个用户生产多个sessionid可能影响性能 因此 会设置一个有效期

假设有效期 5分钟 有些请求 间隔时间较长 可能导致用户要重新去 登录 影响 用户体验 此时就需要续期

续期就是 5分钟 不够我 再加5分钟 不够再加 而 自动续期体现自动 整个过程用户无感知 服务器 判断用户的 jwt时间

自动续期也不是无休止的续期下去 会加入一个最终有效期 如果没有达到最终有效期 就可以自动 到了就需要用户再重新登录

jwt

jwt jesonwebtoken

由三部分组成

header是 加密算法

payload是 实际数据 唯一表示 签发人时间自定义数据 base64等

signatiure 对前两个进行整合

Toke流程

  1. 用户登录向服务端发送账号密码,登录失败返回客户端重新登录。登录成功服务端生成 accessToken 和 refreshToken,返回生成的 token 给客户端。

  2. 在请求拦截器中,请求头中携带 accessToken 请求数据,服务端验证 accessToken 是否过期。token 有效继续请求数据,token 失效返回失效信息到客户端。

  3. 客户端收到服务端发送的请求信息,在二次封装的 axios 的响应拦截器中判断是否有 accessToken 失效的信息,没有返回响应的数据。有失效的信息,就携带 refreshToken 请求新的 accessToken。

  4. 服务端验证 refreshToken 是否有效。有效,重新生成 token, 返回新的 token 和提示信息到客户端,无效,返回无效信息给客户端。

  5. 客户端响应拦截器判断响应信息是否有 refreshToken 有效无效。无效,退出当前登录。有效,重新存储新的 token,继续请求上一次请求的数据。


http://www.ppmy.cn/embedded/100470.html

相关文章

ip归属地换地方了会自动更新吗

在这个数字化时代,互联网已成为我们生活、工作和学习中不可或缺的一部分。而每一个连接互联网的设备,都会通过其IP地址与外界进行通信。IP地址,这个看似简单的数字组合,实则承载着设备位置、网络身份等重要信息。随着人们移动性的…

做空股指期货一手多少钱?

股指期货的保证金比例是12%-15%不等,所以做空一手股指期货的保证金最少是要十几万元,部分平台两万。关于做空一手股指期货的具体金额,这并非固定不变,而是会根据市场的实时价格、合约的乘数以及交易所的规定等因素而有所变动。 股…

Element-ui table进阶使用

最近项目有多个报表开发的需求,我采用的是凤翎前端组件框架(基于element-ui开发),大伙可以直接参考element-ui组件库文档,把标签中的fks替换为el即可。下面我会按顺序一一展开细说这些需求: 1、有多级表头…

Git(面试篇)

目录 配置操作 全局配置 当前仓库配置 查看global配置 查看当前仓库配置 删除global配置 删除当前仓库配置 本地操作 查看变更情况 将当前目录及其子目录下所有变更都加入到暂存区 将仓库内所有变更都加入到暂存区 将指定文件添加到暂存区 比较工作区和暂存区的所有…

云计算实训32——roles基本用法、使用剧本安装nginx、使用roles实现lnmp

一、安装nginx并更改其端口 编辑hosts配置文件 [rootmo ~]# vim /etc/ansible/hosts 创建目录 [rootmo ~]# mkdir /etc/ansible/playbook 编辑配置文件 [rootmo ~]# vim /etc/ansible/playbook/nginx.yml 执行测试 [rootmo ~]# ansible-playbook /etc/ansible/playbook/n…

YoloV8改进策略:卷积篇|ACConv2d模块在YoloV8中的创新应用与显著性能提升|简单易用|即插即用

摘要 在本文中,我们创新性地将ACConv2d模块引入到YoloV8目标检测模型中,通过对YoloV8中原有的Conv卷积层进行替换,实现了模型性能的大幅提升。ACConv2d模块基于不对称卷积块(ACB)的设计思想,利用1D非对称卷积(13和31卷积)来增强标准方形卷积核(如33卷积)的表征能力。…

二进制协议集合

二进制协议在网络通信中通常用于提高数据传输的效率和速度,相比于文本协议(如 HTTP 的 JSON 或 XML),二进制协议的数据格式更为紧凑,解析和处理速度更快。以下是一些常见的二进制协议: 1. Protocol Buffer…

C语言-有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件的信息合并(按字母顺序排列),输出到一个新文件C中去-深度代码解析

1、题目要求 有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件的信息合并(按字母顺序排列),输出到一个新文件C中去 2、准备工作 问题1:为什么不需要手动创建C.txt文件? 答:根…