JWT刷新Token机制的核心是用长期有效的Refresh Token换取短期Access Token,实现免频繁登录与安全提升;需分离两者生命周期、安全存储Refresh Token(如Redis)、提供可靠刷新接口,并强化吊销与风控策略。
JWT刷新Token(Refresh Token)机制的核心是:用一个长期有效的Refresh Token换取新的短期Access Token,避免用户频繁登录,同时提升安全性。C#中实现的关键在于分离两种Token的生命周期、存储Refresh Token的安全方式,以及提供可靠的刷新接口。
Access Token用于每次API请求的身份校验,有效期短(如15–30分钟),不存数据库;Refresh Token用于获取新Access Token,有效期长(如7天),必须安全持久化(如Redis或加密后存数据库)。
sub、exp、role),不存敏感信息jti)、绑定用户ID、设备指纹或IP(可选),便于后续吊销以ASP.NET Core为例,在登录成功后同时签发两个Token:
Microsoft.IdentityModel.Tokens和System.IdentityModel.Tokens.Jwt生成JWTExpires(如DateTime.UtcNow.AddMinutes(20))RandomNumberGenerator),加密后存入Redis(键为refresh:{userId}:{jti},过期时间设为7天){ accessToken: "...", refreshToken: "..." },Refresh Token通过HttpOnly Cookie返回更安全(避免JS读取)该接口需校验Refresh Token有效性,并签发新Access Token:
jti在Redis中存在(查refresh:{userId}:{jti})
resh Token再次存入Redis(同上键名,新jti),返回新Access Token仅基础刷新不够,还需防范常见风险:
token_expired时自动调用刷新;失败则跳转登录页基本上就这些。核心不是“怎么生成JWT”,而是“如何安全地管理Refresh Token的生命周期”。只要把存储、验证、吊销三个环节做扎实,机制就稳了。