1.报错
io.jsonwebtoken.ExpiredJwtException: JWT expired at 2020-07-29T14:48:14Z. Current time: 2020-07-29T14:48:50Z, a difference of 36843 milliseconds. Allowed clock skew: 0 milliseconds.
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:385)
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:481)
at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:541)
at com.smart.util.JwtUtil.parseJwt(JwtUtil.java:63)
at com.smart.util.JwtUtil.isTokenExpired(JwtUtil.java:93)
2.解决方案
去jwtUtil类里面修改解析token方法中的代码
源码
public Claims parseJwt(String token){
Claims claims = Jwts.parser()
.setSigningKey(signKey) // 设置标识名
.parseClaimsJws(token) //解析token
.getBody();
return claims;
}、
修改后的代码
//不管是否过期,都返回claims对象
public Claims parseJwt(String token){
Claims claims;
try {
claims = Jwts.parser()
.setSigningKey(signKey) // 设置标识名
.parseClaimsJws(token) //解析token
.getBody();
} catch (ExpiredJwtException e) {
claims = e.getClaims();
}
return claims;
}
当JWT令牌过期时,解析会抛出`ExpiredJwtException`。解决方案是在`JwtUtil`类中修改`parseJwt`方法,捕获`ExpiredJwtException`,即使过期也能返回Claims对象。

1699

被折叠的 条评论
为什么被折叠?



