echisan / springboot-jwt-demo

这是一个使用了springboot+springSecurity+jwt实现的基于token的权限管理的一个demo
688 stars 254 forks source link

token过期报异常 #12

Closed maxiao227 closed 5 years ago

maxiao227 commented 5 years ago

isExpiration没用上 如果过期后,JwtTokenUtils.getUsername(token)就会报异常。怎么处理呀

echisan commented 5 years ago

可以在getUsername(token) 的时候try catch 一下这个异常 ExpiredJwtException,当捕获到这个异常的时候你就可以做一些事情了,比如返回登陆已过期什么的

maxiao227 commented 5 years ago

我这次low,就low到底了吧。 // 是否已过期 public static boolean isExpiration(String token){ return getTokenBody(token).getExpiration().before(new Date()); } 上面的方法来判断是否过期,但该方法使用了getTokenBody方法的话 private static Claims getTokenBody(String token){ return Jwts.parser() .setSigningKey(SECRET) .parseClaimsJws(token) //此处会报ExpiredJwtException 异常 .getBody(); } 也就是说,isExpiration不会正常返回true和false。有没有解决方法呀

echisan commented 5 years ago

这样不行吗

    public static boolean isExpiration(String token) {
        try{
            return getTokenBody(token).getExpiration().before(new Date());
        }catch (ExpiredJwtException e){
            log.info("token expired");
            return true;
        }
    }