【概念】什么是 JWT Token?
—什么是 JWT Token?
JWT Token(JSON Web Token)
就是一张后端发给前端的小票,里面包含用户身份信息,用于做无状态认证(Stateless Authentication)。
每次前端访问后端接口,都拿着这张小票去验证自己是谁。
🔵 特点:
- 体积小,传输快(就是字符串)
- 安全(签名加密,无法伪造)
- 服务器不用存储 Session,减轻压力(无状态)
🔵 使用场景:
- 登录认证
- 授权控制(admin / user)
- 单点登录(SSO)
🔥 那么问题来了:JWT 本身有个小缺点!
JWT 有过期时间,比如:
{ expiresIn: '3d' } // 三天后失效
如果三天后 token 过期了,前端就必须让用户重新登录 ➔ 很烦!
比如:
- 你打开一个网站,结果因为 token 过期,突然弹出让你重新登录
- 用户体验差,流失率高
✅ 这时候就用到 Refresh Token机制 来救场!
🎯 什么是 Refresh Token?
-
服务器在用户登录时,同时发两个 token:
- Access Token(访问用的,短生命周期,比如 15分钟)
- Refresh Token(续命用的,长生命周期,比如 7天、30天)
-
当 Access Token 过期时:
- 前端拿着 Refresh Token 向服务器请求一个新的 Access Token
- 用户无感知刷新,不用重新登录!
🔵 过程流程:
[第一次登录] ->
服务器发回 { accessToken + refreshToken } ->
前端保存起来每次访问 -> 带上 accessToken如果 accessToken 过期 ->
用 refreshToken 去请求新的 accessToken
->
拿到新 accessToken,继续访问
📦 一个 Refresh Token 机制小案例
后端(伪代码)
// 登录成功后
const accessToken = jwt.sign({ id: user._id }, ACCESS_SECRET, { expiresIn: '15m' });
const refreshToken = jwt.sign({ id: user._id }, REFRESH_SECRET, { expiresIn: '7d' });// 返回给前端
res.json({ accessToken, refreshToken });
前端(伪流程)
- 每次请求 API,都带上 accessToken
- 如果 accessToken 返回 401(过期)
- 自动用 refreshToken 去调用
/api/auth/refresh
- 拿到新的 accessToken
- 重新发送之前失败的请求
- 自动用 refreshToken 去调用
🛠 Refresh Token API 示例
// 刷新 accessToken
app.post('/api/auth/refresh', (req, res) => {const { refreshToken } = req.body;if (!refreshToken) return res.sendStatus(401);jwt.verify(refreshToken, REFRESH_SECRET, (err, decoded) => {if (err) return res.sendStatus(403); // refresh token 无效或过期const newAccessToken = jwt.sign({ id: decoded.id }, ACCESS_SECRET, { expiresIn: '15m' });res.json({ accessToken: newAccessToken });});
});
📖 中文总结一句话
Refresh Token机制 = 提供一个长期有效的小票(Refresh Token),当短期小票(Access Token)过期时,无需重新登录,通过刷新拿到新小票,继续访问。
📖 英文总结(用于Assignment Report)
Refresh Token is a mechanism that issues a long-lived token alongside a short-lived Access Token during user login.
When the Access Token expires, the client uses the Refresh Token to obtain a new Access Token without requiring the user to re-authenticate.
This improves user experience and maintains session continuity.
🚀 为什么大型项目一定用 Refresh Token?
项目 | 影响 |
---|---|
没有 Refresh Token | 用户一段时间后需要重新登录,体验差 |
有 Refresh Token | 用户可以无感知地保持登录状态,体验好,粘性高 |
🔵 常见应用:
- Google、Facebook、AWS后台
- 任何高级 Web App / Mobile App
🎯 总结表格
Access Token | Refresh Token | |
---|---|---|
生命周期 | 短(15分钟) | 长(7天、30天) |
存储 | 通常存在内存或 HttpOnly cookie | 安全存储(cookie、localStorage) |
用途 | 调用 API 时验证 | 刷新 Access Token |
过期后 | 需要刷新或重新登录 | 重新登录 |
相关文章:
【概念】什么是 JWT Token?
—什么是 JWT Token? JWT Token(JSON Web Token) 就是一张后端发给前端的小票,里面包含用户身份信息,用于做无状态认证(Stateless Authentication)。 每次前端访问后端接口,都拿着…...
部署大模型需要多少GPU显存?以DeepSeek R1部署为例
引言 部署大型语言模型(LLM)时究竟需要多少GPU显存?本文将进行一次简单测算。 如何计算 算法1 可以用一个简单的公式来计算显存占用(单位GB): 参数说明如下: 符号 含义 M 所需的 GPU 显存…...

用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本1
希望借助手写这个go的中间件项目,能够理解go语言的特性以及用go写中间件的优势之处,同时也是为了更好的使用和优化公司用到的trpc,并且作者之前也使用过grpc并有一定的兴趣,所以打算从0构建一个rpc系统,对于生产环境已…...
Fedora 43 计划移除所有 GNOME X11 相关软件包
Fedora 43 计划移除所有 GNOME X11 相关软件包,这是 Fedora 项目团队为全面拥抱 Wayland 所做的重要决策。以下是关于此计划的详细介绍: 提案内容:4 月 23 日,Neal Gompa 提交提案,建议从 Fedora 软件仓库中移除所有 G…...

django之账号管理功能
账号管理功能 目录 1.账号管理页面 2.新增账号 3.修改账号 4.账号重置密码 5.删除账号功能 6.所有代码展示集合 7.运行结果 这一片文章, 我们需要新增账号管理功能, 今天我们写到的代码, 基本上都是用到以前所过的知识, 不过也有需要注意的细节。 一、账号管理界面 …...
搭建spark-local模式
要搭建Spark的local模式,你可以按照以下步骤进行操作(以在Linux系统上安装为例,假设你已经安装了Java环境): 1. 下载Spark安装包:访问Spark官方网站(https://spark.apache.org/downloads.html&a…...

月之暗面开源 Kimi-Audio-7B-Instruct,同时支持语音识别和语音生成
我们向您介绍在音频理解、生成和对话方面表现出色的开源音频基础模型–Kimi-Audio。该资源库托管了 Kimi-Audio-7B-Instruct 的模型检查点。 Kimi-Audio 被设计为通用的音频基础模型,能够在单一的统一框架内处理各种音频处理任务。主要功能包括: 通用功…...

IDEA配置将Servlet真正布署到Tomcat
刚开始只能IDEA运行完Servlet web application 并保持IDEA运行才能通过浏览器访问到我的Servlet,跟想象中的不一样,不应该是IDEA运行完项目以后只要打开Tomcat就能访问吗?事实时运行完项目只要关掉IDEA就不能再访问到应用了,而且T…...
删除新安装IBM Guardium Data Protection 12.1的baltimorecybertrustroot证书
登录web console,会显示 baltimorecybertrustroot证书过期警告。 采用下面的命令删除过期证书就可消除警告。 collector02.cpd.com> delete certificate keystore Select an alias from the list below to delete the corresponding certificate. Alias List:…...
【蓝桥杯】画展布置
画展布置 题目描述 画展策展人小蓝和助理小桥为即将举办的画展准备了 N N N 幅画作,其艺术价值分别为 A 1 , A 2 , … , A N A_1, A_2, \dots , A_N A1,A2,…,AN。他们需要从这 N N N 幅画中挑选 M M M 幅,并按照一定顺序布置在展厅的 M M …...
请求参数、路径参数、查询参数、Spring MVC/FeignClient请求相关注解梳理
目录 1 请求分类1.1 URL参数--查询参数1.2 URL参数--路径参数 2 请求相关注解2.1 RequestParam--查询参数2.2 PathVariable--路径参数2.3 RequestBody2.4 Param & RequestLine2.5 SpringMVC请求参数注解用在FeignClient里 使用SpringMVC处理http请求或使用FeignClient进行请…...
MySQL 详解之复制与集群:构建高可用与可扩展数据库架构
随着业务的发展,单一的数据库实例往往难以满足需求: 性能瓶颈: 读写请求量不断增加,单个服务器的 CPU、内存、磁盘、网络资源达到上限,尤其是读请求远大于写请求的场景。高可用性: 单个服务器一旦发生故障(硬件故障、操作系统问题、机房断电等),数据库服务将完全中断,…...

刚体运动 (位置向量 - 旋转矩阵) 笔记 1.1~1.3 (台大机器人学-林沛群)
目录 1. 理解刚体的“自由度”(Degrees of Freedom, DOF) 1.1 平面运动 (2D) 1.2 空间运动 (3D) 2. 统一描述:引入“体坐标系”(Body Frame) 3. 从“状态”到“运动”:引入微分 3.1 补充:…...

openAICEO山姆奥特曼未来预测雄文之三个观察
《三个观察》 山姆奥特曼 这篇文章主要讲的是关于AGI(人工通用智能)的未来发展及其对社会的影响,用大白话总结如下: 核心观点: AGI是什么? AGI是一种能像人类一样解决各种复杂问题的智能系统,比…...
Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案
在 Java 网络通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 协议版本不兼容异常。本文结合 Java 官方规范、TLS 协议标准及实战经验,提供体系化解决方案,帮助开发者快速定位并解决协议版本冲突问题。 一、异常本质&…...

比象AI创作系统,多模态大模型:问答分析+AI绘画+管理后台系统
比象AI创作系统是新一代集智能问答、内容创作与商业运营于一体的综合型AI平台。本系统深度融合GPT-4.0/GPT-4o多模态大模型技术,结合实时联网搜索与智能分析能力,打造了从内容生产到商业变现的完整闭环解决方案。 智能问答中枢 系统搭载行业领先的对话…...
【2025 最新前沿 MCP 教程 03】基础构建模块:工具、资源与提示
文章目录 1. 开始啦2. 工具(模型控制):赋予 AI 行动能力3. 资源(应用控制):为 AI 提供关键上下文4. 提示(用户可控):优化 AI 交互5. 它们如何协同工作 1. 开始啦 欢迎来…...

Docker-高级使用
前言 书接上文Docker-初级安装及使用_用docker安装doccano-CSDN博客,我们讲解了Docker的基本操作,下面我们讲解的是高级使用,请大家做好准备! 大家如果是从初级安装使用过来的话,建议把之前镜像和搭载的容器数据卷里面…...

计算机网络 | Chapter1 计算机网络和因特网
💓个人主页:mooridy-CSDN博客 💓文章专栏:《计算机网络:自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 🌹关注我,和我一起学习更多计算机网络的知识 🔝🔝 目录 …...
PowerBi中ALLEXCEPT怎么使用?
在 Power BI 的 DAX 中,ALLEXCEPT() 是一个非常重要的函数,用来实现**“在保留部分筛选条件的前提下,移除其他所有筛选器”**,它常用于 同比、占比、累计汇总 等分析中。 ✅ 一、ALLEXCEPT 是什么意思? 函数全称&…...

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 medical - pills.yaml 通常用于配置与医学药丸检测任务相关的参数和信息 Objects365.yaml 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别…...

蚂蚁集团“Plan A”重磅登场,开启AI未来
近期,蚂蚁集团面向全球高潜AI人才,正式发布顶级专项招募计划——“Plan A”。作为其“蚂蚁星”校招体系的全新升级模块,Plan A聚焦人工智能领域科研精英,旨在与全球高校AI研究者协同突破AGI前沿,共绘技术未来图谱。 蚂…...

高中数学联赛模拟试题精选第18套几何题
在 △ A B C \triangle ABC △ABC 中, A B < A C AB< AC AB<AC, 点 K K K, L L L, M M M 分别是边 B C BC BC, C A C A CA, A B AB AB 的中点. △ A B C \triangle ABC △ABC 的内切圆圆心为 I I I, 且与边 B C BC BC 相切于点 D D D. 直线 l l l 经过线段…...
Kettle学习
一、Kettle 简介 Kettle(现称为 Pentaho Data Integration)是一款开源ETL工具,支持从多种数据源抽取、转换和加载数据,广泛应用于数据仓库构建、数据迁移和清洗。其核心优势包括: 可视化操作:通过拖拽组件设计数据处理流程(转换和作业)。多数据源支持:数据库(MySQL/…...
Synopsys 逻辑综合的整体架构概览
目录 一、DC Shell 逻辑综合的整体架构概览 ⛓️ 逻辑综合的主要阶段(Pipeline) 二、核心架构模块详解 1. Internal Database(设计对象数据库) 2. Scheduler(调度器) 3. Rewriting Engine(…...
Missashe考研日记-day27
Missashe考研日记-day27 0 写在前面 博主昨晚有事所以没学专业课,白天学了其他科,但是觉得不太好写博客,就合在今天一起写好了。 1 专业课408 学习时间:3h30min学习内容: 今天把内存管理部分剩下的关于分页分段和段…...

Java 富文本转word
前言: 本文的目的是将传入的富文本内容(html标签,图片)并且分页导出为word文档。 所使用的为docx4j 一、依赖导入 <!-- 富文本转word --><dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId&…...

多模态大语言模型arxiv论文略读(四十三)
InteraRec: Screenshot Based Recommendations Using Multimodal Large Language Models ➡️ 论文标题:InteraRec: Screenshot Based Recommendations Using Multimodal Large Language Models ➡️ 论文作者:Saketh Reddy Karra, Theja Tulabandhula …...

GPU加速-系统CUDA12.5-Windows10
误区注意 查看当前系统可支持的最高版本cuda:nvidia-smi 说明: 此处显示的12.7只是驱动对应的最高版本,不一定是 / 也不一定需要是 当前Python使用的版本。但我们所安装的CUDA版本需要 小于等于它(即≤12.7)因此即使…...

kafka课后总结
Kafka是由LinkedIn开发的分布式发布 - 订阅消息系统,具备高吞吐量、低延迟、可扩展性、持久性、可靠性、容错性和高并发等特性。其主要角色包括Broker、Topic、Partition、Producer、Consumer、Consumer Group、replica、leader、follower和controller。消息系统中存…...