关于refresh token的疑问

Blade 未结 2 916
jma
jma 剑者 2022-07-11 12:16

一、该问题的重现步骤是什么?

1. 想要实现的是 token过期了, 后端返回statusCode = 403, 加一个状态码比如code=1002来判断token过期, 前端再用refresh_token刷新token, 这时候发现AuthFilter那里虽然可以获取过期的token字符串, 但是JwtUtil.parseJwt(token)获取的claims为null, 请问后端怎么判断token过期了?

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

BladeX 2.9.1 

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  • 2022-07-11 22:10

    后端解析出来的token有一个时间戳字段,标识了过期时间。是否过期,后端比对一下就知道了

    0 讨论(0)
  • 2022-07-12 11:50

    好的, 发现了, 

    public static Claims parseJWT(String jsonWebToken) {
      try {
         return Jwts.parserBuilder()
            .setSigningKey(Base64.getDecoder().decode(getBase64Security())).build()
            .parseClaimsJws(jsonWebToken).getBody();
      } catch (ExpiredJwtException e) {
         return e.getClaims();
      } catch (Exception e) {
         return null;
      }
    }

    加个ExpiredJwtException 抓取就可以查看过期时间了

    0 讨论(0)
提交回复