自动续期 双token流程

为什么需要自动续期

从状态维护说起 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,继续请求上一次请求的数据。

相关推荐
大数据追光猿3 分钟前
Python中的Flask深入认知&搭建前端页面?
前端·css·python·前端框架·flask·html5
莫忘初心丶5 分钟前
python flask 使用教程 快速搭建一个 Web 应用
前端·python·flask
横冲直撞de37 分钟前
前端接收后端19位数字参数,精度丢失的问题
前端
我是哈哈hh38 分钟前
【JavaScript进阶】作用域&解构&箭头函数
开发语言·前端·javascript·html
摸鱼大侠想挣钱39 分钟前
ActiveX控件
前端
谢尔登40 分钟前
Vue 和 React 响应式的区别
前端·vue.js·react.js
酷酷的阿云41 分钟前
Vue3性能优化必杀技:useDebounce+useThrottle+useLazyLoad深度剖析
前端·javascript·vue.js
神明木佑42 分钟前
HTML 新手易犯的标签属性设置错误
前端·css·html
老友@44 分钟前
OnlyOffice:前端编辑器与后端API实现高效办公
前端·后端·websocket·编辑器·onlyoffice
bin91531 小时前
DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)
前端·javascript·vue.js·ecmascript·deepseek