首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JWT 过期刷新太混乱?最简单的刷新策略与黑名单设计(时序图)

JWT 过期刷新太混乱?最简单的刷新策略与黑名单设计(时序图)

作者头像
安全风信子
发布2025-11-18 18:59:53
发布2025-11-18 18:59:53
1680
举报
文章被收录于专栏:AI SPPECHAI SPPECH

一句话承诺:用时序图和接口示例,快速落地可用的刷新策略,避免“无限续命”。

策略对照表

项目

建议

说明

access_token

15~30分钟

短期、体积小

refresh_token

7~30天

长期、仅用于刷新

黑名单存储

Redis/DB

记录已作废refresh_token


接口示例(Node.js/Express)

代码语言:javascript
复制
app.post('/auth/refresh', async (req, res) => {
  const rt = req.body.refresh_token;
  const inBlacklist = await redis.sismember('rt:blacklist', rt);
  if (inBlacklist) return res.status(401).json({ message: 'refresh token revoked' });

  // 校验rt合法性(省略)
  const newAccess = signAccess({ uid: req.user.id }, { expiresIn: '20m' });
  const newRefresh = signRefresh({ uid: req.user.id }, { expiresIn: '30d' });

  // 黑名单旧refresh
  await redis.sadd('rt:blacklist', rt);
  res.json({ access_token: newAccess, refresh_token: newRefresh });
});

少量解释

  • 刷新时返回新旧两令牌:旧的 refresh 立刻加入黑名单,避免被重复使用。
  • access_token 短期,refresh_token 长期;客户端仅在401时触发刷新。
  • 黑名单可设置过期时间与定期清理,避免无界增长。

常见坑与替代法

  • 坑:refresh 不失效导致无限续期。替代:每刷新一次作废旧 refresh。
  • 坑:把刷新接口暴露给第三方未限制。替代:限制来源与速率限制。
  • 坑:黑名单无过期策略。替代:设置自动过期,与令牌生命周期一致。

下一篇预告

VS Code 写作效率提升:批量占位、片段模板与常用扩展(清单+演示)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 策略对照表
  • 接口示例(Node.js/Express)
  • 少量解释
  • 常见坑与替代法
  • 下一篇预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档