jwt令牌中token过期如何处理?

当JWT令牌过期时,解析会抛出`ExpiredJwtException`。解决方案是在`JwtUtil`类中修改`parseJwt`方法,捕获`ExpiredJwtException`,即使过期也能返回Claims对象。

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;
    }
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值