我正在使用JWT(承载令牌)在spring框架上进行身份验证。
public String generateToken(UserProfile authentication) {
// set the expiration time
Date now = new Date();
Date expiryDate = new Date(now.getTime() + jwtExpirationInMs);
// Generate token and return
return Jwts.builder()
.setSubject(authentication.getUsername())
.claim("roles","user")
.setIssuedAt(new Date())
.setExpiration(expiryDate)
.signWith(SignatureAlgorithm.HS512,jwtSecret)
.compact();
上面的类生成一个令牌并响应用户。我的问题是,当用户在第一个令牌到期之前发出新令牌时,我将如何删除该令牌;用户在第一个令牌过期之前请求新令牌时,要撤消第一个令牌?
答案 0 :(得分:1)
如果您使用JWT,则无法撤销令牌。其有效性是嵌入式的。
要撤消令牌时,请勿使用JWT。您必须保留令牌并在每次请求时检查其有效性。
如果您真的想使用它,请将其保存为独立的db,然后添加一个标志或时间戳以确认有效性。
查看JWT文档:https://jwt.io/
答案 1 :(得分:0)
我认为JWT无法做到这一点。 你可以
基本上,将其列入黑名单
我不知道其他解决方案