JWT 强制失效方案:密码修改/设备丢失?Redis 版本控制秒级踢人下线!
作为后端开发者,我们对 JWT(JSON Web Token)肯定不陌生。它解决了 Session 分布式一致性的问题,但是传统的 JWT 有个致命的缺陷:一旦签发,除非过期,否则无法强制失效。 你肯定遇到过这些场景: 用户修改密码后,旧的 JWT 还能用? 用户丢失设备,想立刻踢掉旧设备登录的账号? 管理员强制下线某个危险用户? 用户主动退出登录,但 JWT 还在有效期内? 如果用传统的 JWT 方案,这些问题都很难解决。今天我们就来聊聊如何通过 Redis 版本控制实现 JWT 的秒级强制失效。 为什么 JWT 难以强制失效? 我们先回顾一下 JWT 的工作原理: 客户端登录 → 服务器签发 JWT → 客户端存储 JWT → 每次请求携带 JWT → 服务器验证 JWT → 通过则放行 JWT 的特点: 无状态:服务器不需要存储 JWT,只需要验证签名 自包含:JWT 本身包含了用户信息、过期时间等 签名验证:只要签名正确、未过期,就认为有效 问题就出在这里:JWT 是自验证的,服务器无法中途改变主意。 传统的解决方案通常是: 把 JWT 存在 Redis 里,每次请....