Token过期,无感更新

news/2025/3/20 10:45:01/文章来源:https://www.cnblogs.com/lxl0419/p/18782564

1、token是什么

  通常指的是前后端之间的安全通信过程中使用的令牌。

  • Token是一种用于身份验证的数据结构,它由服务器生成并返回给客户端。目的是为了在客户端和服务端之间建立一个安全的连接,使得客户端可以无需再次携带用户的用户名和密码即可发起请求。这样可以避免重复的身份验证过程,节省服务器资源,同时减少网络传输的数据量。
  • 在首次登录后,服务器会生成一段加密的字符串作为Token,并返回给客户端。此后,每当客户端想要访问服务端的资源时,只需带token发出请求。

  • 由于许多请求都需要携带token,因此通常会通过请求拦截器等方式在请求处理之前自动添加。

综上所述,前端Token是在服务器和客户端的交互中用于识别用户身份的一种安全机制,它允许客户端在不需要重新提交用户凭证的情况下,继续与服务器的交互

2、Token的主要作用

  1. 用作身份验证:在用户登录成功后,服务器会根据用户的身份信息生成一个Token。客户端会将这个Token保存在本地,并在后续的所有请求中携带它。这样,无论是在客户端还是在服务器端,都可以通过比较Token来判断本次请求是否来自已登录的用户。
  2. 减轻服务器压力:由于HTTP协议是无状态的,服务器无法知道每个请求是否来自于已经登录的用户。因此,使用Token可以在一定程度上减少服务器对用户身份的检查次数,从而降低服务器的工作负担。
  3. 保护信息安全:为了避免Token被滥用或泄露,通常会在其前几位采用哈希算法压缩成一个较短的十六进制字符串。这样做可以增加安全性和隐私性。

  4. 防止未登录状态下访问页面:在某些情况下,可以通过设置Token的有效期限来进一步增强安全性。如果Token超出了设定的有效期限,那么用户将无法继续访问任何页面,直到重新登录为止。

3、无感刷新token

         无感刷新Token是指在Token过期之前,系统自动使用Refresh Token获取新的Access Token,从而实现Token的无感刷新,用户可以不用重新登录而继续使用应用。实现无感刷新关键在于:

  1. 如何判断token是否过期
  2. 如何在token过期时,自动调用Refresh Token刷新 Access Token
  3. Refresh Token的安全性
  4. Access Token:简称短token,正常的本地存储的用户身份认证token,时效短;过期后需要重新获取。

  5. Refresh Token:简称长token,出于安全性考虑存储在服务器,当短token过期后,需要根据长token去刷新短token;如果长token也过期了,就需要用户重新登录去重新获取这两个token

4、在无感刷新过程中有新的请求

  1. 只有一个请求,则拿到新token直接重新请求即可
  2. 如果有多个请求则:
    • 创建一个flag isRefreshing 来判断是否刷新中
    • 创建一个数组队列retryRequests来保存需要重新发起的请求
    • 判断到Token过期
    • isRefreshing = false 的情况下 发起刷新Token的请求
    • 刷新Token后遍历执行队列retryRequests
    • isRefreshing = true 表示正在刷新Token,返回一个Pending状态的Promise,并把请求信息保存到队列retryRequests中,确保Pending状态不变

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901920.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过 INFINI Console 集中管理极限网关配置

之前有做过介绍实现极限网关(INFINI Gateway) 配置动态加载,这是一个 Gateway 实例的操作,直接在服务器上修改配置文件。如果有多个 Gateway 实例需要调整,登录多台主机修改配置文件就有些繁琐,有没有简便的方法呢? 答案是: 当然有! INFINI Gateway 有配套的管理页面,…

如何精准控制生产成本?8年生产主管告诉我掌握这些底层逻辑!

你是不是常常听到“控制成本”这个词,但却搞不清楚到底应该从哪里入手? 其实,成本控制并不是简单的削减支出,而是要在每个环节上做到精益求精。 作为一名有8年经验的生产主管,我可以告诉你,成本控制的关键在于对生产过程中的每一环节都要有清晰的了解和精准的把控。下文介…

CIMCO Edit 2024软件下载与安装教程

CIMCO Edit 2024是Cimco Integration公司推出的一款强大的数控程序编辑器,可帮助用户进行存储和检索NC程序、NC程序优化、后处理、以及快速NC程序仿真,它拥有强大而实用的数控编辑功能、文件的智能比较、刀位轨迹的三维模拟、DNC传输等强大功能,可帮助用户更快捷的完成NC程序…

FunASR: 让AI听懂你的声音

分享一个语音识别黑科技——开源免费的FunASR!我们先看下Funasr的语音识别效果。第一个是识别MP4视频文件。第二个是,电话语音实时识别。FunASR有两个识别引擎,离线识别 和 实时识别。 离线识别引擎,主要用途是对录音文件进行转写,得到文本结果。 典型的使用场景:会议录音…

启航杯writeup

启航杯writeup 一、web 1.Easy_include题解打开网址得到php代码,发现存在可以通过伪协议来绕过过滤​ 2.构造伪协议 ​ 命令会反向输出所有以fl开头的文件内容输出得到的内容。 ?file=data://text/plain,<?=system(tac fl*);?>​ 3.得到flag2.PCR(文件上传请求)…

使用ArgoCD管理Kubernetes部署指南

对于寻求利用云原生技术力量的组织来说,高效管理 Kubernetes 部署至关重要。ArgoCD 是一款针对 Kubernetes 的声明式 GitOps 持续交付工具,它是一种强大的解决方案。它有助于根据存储在 Git 存储库中的配置自动部署应用程序,从而使 Kubernetes 集群中的应用程序状态与 Git 中…

DeepC2—基于DeepSeek的C2平台

蹭个DeepSeek热点最近DeepSeek很火,蹭个热点,前几天搞了个自动生成工具的网站,有模有样吧,作用的话看看就行,网上绝大部分所谓的Agent也就这样...

3.19 CW 模拟赛 T3. 软件工程

前言 策略肯定是锅了, 基础上需要对策略进行一些修改 喵了个咪的最终还是要针对考试 谢特 某吴姓同学的策略是非常适合我的, 在它的基础上, 我们考虑进行一些本土化 首先花 \(20 \textrm{min}\) 思考每道题, 也就是每道题严格 \(5 \textrm{ min}\) 首先按照能拿到的 \(\rm{subt…

生成AI的两大范式:扩散模型与Flow Matching的理论基础与技术比较

生成模型已成为人工智能领域的关键突破,赋予机器创建高度逼真的图像、音频和文本的能力。在众多生成技术中,扩散模型和Flow Matching尤为引人注目。这两种方法虽然都致力于在噪声与结构化数据之间建立转换,但其基础原理存在本质区别。本文将系统地比较这两种先进技术,深入探…

基于ACE_SOCK_Dgram的UDP同步通信

1、创建基于ACE_SOCK_DGRAM的UDP服务端1 void udp_server_base_on_synch()2 {3 // 1. 绑定服务端地址(端口 8080)4 ACE_INET_Addr server_addr(8080);5 ACE_SOCK_DGRAM sock;6 if (sock.open(server_addr) == -1) {7 std::cerr << "Serve…

第二十一章 项目管理科学基础(2025年详细解析版)

目录导学21.1 工程经济学资金的时间价值与等值计算定义常识现在值与将来值等值计算问题单利法与复利法 (利滚利)单利法复利法承兑汇票示例项目经济静态评价方法什么叫回收期?什么叫静态?静态投资回收期例题(必须掌握)投资收益率定义公式例题项目经济动态评价方法什么是动态…

windows输入法选用

前言 一直以来pc输入法都是用的搜狗,但是总想换一个用一用,每次都是尝试换讯飞,每次都用不下去。 不推荐 讯飞 bug极多。比如中文输入下,按shift,应该留下英文。当然一般情况下没问题,但是出现bug时,切换后再打字,会覆盖前面的字。 QQ 曾长期使用过,但是那时候用电脑用…