当前位置: 首页 > article >正文

#Vue3篇: 无感刷新token的原理JSESSIONID无感刷新和JWT接口刷新

基于这个后端是怎么更新token的
为了理解后端是如何更新 Token 的,我们需要考虑一个典型的基于 Token 的身份验证流程,特别是涉及 JSESSIONID 和自定义 Token(如 JWT, JSON Web Token)的情况。
下面我将介绍两种常见的更新 Token 的机制:一种是基于会话的(使用 JSESSIONID),另一种是无状态的(使用 JWT>

基于会话的身份验证(使用 JSESSIONID)

初始登录:
用户提交用户名和密码进行登录。
服务器验证凭据,并创建一个新的会话。
服务器为该会话生成一个唯一的 JSESSIONID,并通过响应头中的 Set-Cookie 发送给客户端。
客户端保存这个 Cookie,并在后续请求中自动附带它。
Token 更新:
在基于会话的身份验证中,实际上没有所谓的“更新 Token”的过程。相反,只要用户的会话仍然有效(即没有过期或被手动销毁),服务器就会继续识别与 JSESSIONID 关联的会话。
如果会话超时或者用户主动登出,服务器会销毁会话并使 JSESSIONID 失效。此时,用户需要重新登录以创建新的会话。
无感刷新会话:
某些应用可能会实现一种“记住我”功能,允许用户在较长时间内保持登录状态。这通常通过设置较长的会话有效期来实现,或者结合持久化存储(如数据库中的记录)来延长会话寿命。
另外,有些服务器会在每次接收到带有有效 JSESSIONID 的请求时重置会话的有效期,从而实现所谓的“滑动窗口”机制,确保用户活跃期间不会轻易掉线。

使用 JWT 的无状态身份验证

对于 JWT,更新 Token 的过程更为明确,因为它涉及到具体的 Token 管理策略:

获取访问 Token:
用户成功登录后,服务器返回一个包含用户信息的 JWT,作为访问 Token。
访问 Token 通常有一个较短的有效期(例如几分钟到几小时),并且会在每次请求时由客户端发送给服务器用于身份验证。
刷新 Token:
除了访问 Token,服务器还可能发放一个刷新 Token,它的有效期更长(几天到几个月)。
当访问 Token 即将过期时,客户端可以使用刷新 Token 向服务器请求新的访问 Token。
服务器验证刷新 Token 的有效性后,签发新的访问 Token 并返回给客户端。
刷新 Token 本身也可能有过期时间,且某些系统还会限制其使用次数或频率。
无感刷新:
为了提供无缝体验,前端可以在检测到访问 Token 即将过期时自动发起刷新请求。
这种逻辑可以通过拦截器或其他中间件实现,确保用户在正常操作过程中不会因为 Token 过期而被迫重新登录。

结合 JSESSIONID 和 JWT 的混合模式

有时,开发人员会选择结合两者的优势:

使用 JSESSIONID 来管理短期会话,保证快速的身份验证。
使用 JWT 作为访问 Token,利用其轻量级和易于传输的特点。
利用刷新 Token 或其他机制来处理长期认证需求。
如何确认后端更新 Token 的方式
要确定你的应用程序具体是如何更新 Token 的,最直接的方法是查看 API 文档或询问负责后端开发的同事。

此外,还可以通过以下方式进行调查:

分析网络流量:使用浏览器开发者工具或其他 HTTP 调试工具(如 Fiddler、Charles Proxy)监控实际的请求和响应,观察 Token 是如何传递和更新的。
检查代码:如果有可能的话,直接审查后端代码,特别是与身份验证相关的部分,比如控制器、服务层以及配置文件。
测试不同场景:模拟不同的用户行为(如长时间不活动后再活动、尝试访问受保护资源等),然后观察系统的反应。
总之,无论是基于会话还是 JWT,后端更新 Token 的机制都依赖于特定的应用设计和技术栈选择。了解这些细节有助于更好地集成前端与后端之间的交互,并确保安全性和用户体验得到优化。


http://www.kler.cn/a/460147.html

相关文章:

  • vue中的设计模式
  • 系统设计——大文件传输方案设计
  • 注入少量可学习的向量参数: 注入适配器IA3
  • QT---------自定义插件和库
  • 【Python】FastAPI之SQLAlchemy、关联关系
  • 【Ubuntu使用技巧】Ubuntu22.04无人值守Crontab工具实战详解
  • 算力股开盘大涨,电光科技7连板
  • C#中通过Mapster实现轻量级高效对象映射器
  • 【Leetcode 热题 100】39. 组合总和
  • Excel 面试 04 查找函数 XLOOKUP
  • leetcode------mysql
  • 【Lua】元表与元方法
  • 【论文阅读笔记】IceNet算法与代码 | 低照度图像增强 | IEEE | 2021.12.25
  • 我是用git pull每次都要输入账号密码
  • 数据安全技巧:使用私钥认证结合内网穿透实现安全高效的服务器管理
  • 应用层2——FTP文件传输协议
  • QT作业4
  • 一文大白话讲清楚CSS元素的水平居中和垂直居中
  • 浅显易懂的 git 入门
  • 电池放电仪在各领域的作用
  • android——屏幕适配
  • 【Flink运行时架构】系统构架
  • 咚次游戏加速1.1.4.2 | 免费PC游戏加速器,支持1473款游戏加速
  • 如何初始化css样式?为什么要初始化css?
  • python-LeetCode-两数之和
  • Spring Boot缓存预热实战指南