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

【概念】什么是 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:

    1. Access Token(访问用的,短生命周期,比如 15分钟)
    2. 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
    • 重新发送之前失败的请求

🛠 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 TokenRefresh Token
生命周期短(15分钟)长(7天、30天)
存储通常存在内存或 HttpOnly cookie安全存储(cookie、localStorage)
用途调用 API 时验证刷新 Access Token
过期后需要刷新或重新登录重新登录

相关文章:

  • Gewechat启动启动报错
  • GPU加速-系统CUDA12.5-Windows10
  • 【开源】基于51单片机的简易智能楼道照明设计
  • 栈应用:括号匹配
  • 论文阅读:2025 arxiv Aligning to What? Limits to RLHF Based Alignment
  • Java大师成长计划之第4天:Java中的泛型
  • Yarn 安装与使用教程
  • 自动化测试方法有哪些?
  • 【软考-架构】14、软件可靠性基础
  • 深入解析 ASP.NET Core 中的 ResourceFilter
  • 从像素到实例:揭示图像分割如何改变视觉世界
  • 线程池单例模式
  • 【设计模式区别】装饰器模式和适配器模式区别
  • 单例设计模式之懒汉式以及线程安全问题
  • 从循环角度分析逐位分离法
  • 【人工智能之大模型】详述大模型中流水线并行(Pipeline Parallelism)的​GPipe推理框架?
  • 如何选择合适的探针台
  • C#中wpf程序中的x名空间详解
  • 微信小程序 template 模版详解
  • 机器学习之二:指导式学习
  • 魔都眼·上海车展⑥|周六客流超13.5万人次,创开展新高
  • 蚂蚁集团将向全体股东分红
  • 男子闲鱼卖手机卷入电诈案后成“网逃”续:警方已排除其作案嫌疑
  • 国家卫健委:坚决反对美国白宫网站翻炒新冠病毒“实验室泄漏”
  • 肖扬任武钢集团董事长、党委书记
  • 【社论】高度警惕AI谣言对网络空间的污染