jwt令牌过期问题,不知道是因为什么问题引起的

自己的jwt代码一直没有动过,但刚才测试后台接口时,测试任何方法都会报出未登录,请登录的提示,但是验证码是可以正常获取的。打开ida的后台显示jwt已过期,但是以前测试时jwt一直没有问题,帮帮忙,个人觉得可能不是jwt问题,因为之前跟着视频做rabbitmq的消费端幂等性运行的时候还好好的,谢谢xd!

这个是测试是的消息:

img

这个是idea的报错:

img

这个是jwtUtil文件内容:

img

img

img

img

这个是JwtAuthenticationTokenFilter的内容:

img

登录也不行吗?参考:

@ConfigurationProperties(prefix = "jwt")
@Component
public class JwtUtils {

    private String secret;
    private long expire;
    private String header;

    /**
     * 生成token
     *
     * @param userId
     * @return
     */
    public String createToken(String userId) {
        Date nowDate = new Date();
        //过期时间
        Date expireDate = new Date(nowDate.getTime() + expire * 1000);
        return Jwts.builder()
                .setHeaderParam("typ", "JWT")
                .setSubject(userId + "")
                .setIssuedAt(nowDate)
                .setExpiration(expireDate)
                .signWith(SignatureAlgorithm.HS512, secret)
                .compact();
    }

    public Claims getClaimByToken(String token) {
        try {
            return Jwts.parser()
                    .setSigningKey(secret)
                    .parseClaimsJws(token)
                    .getBody();
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 获取token的过期时间
     *
     * @param token token
     * @return 过期时间
     */
    public Date getExpirationDateFromToken(String token) {
        return getClaimByToken(token).getExpiration();
    }

    /**
     * 判断token是否过期
     *
     * @param token token
     * @return 已过期返回true,未过期返回false
     */
    public Boolean isTokenExpired(String token) {
        Date expiration = getExpirationDateFromToken(token);
        return expiration.before(new Date());
    }

    /**
     * 判断token是否非法
     *
     * @param token token
     * @return 未过期返回true,否则返回false
     */
    public Boolean validateToken(String token) {
        return !isTokenExpired(token);
    }

    public String getSecret() {
        return secret;
    }

    public void setSecret(String secret) {
        this.secret = secret;
    }

    public long getExpire() {
        return expire;
    }

    public void setExpire(long expire) {
        this.expire = expire;
    }

    public String getHeader() {
        return header;
    }

    public void setHeader(String header) {
        this.header = header;
    }
}


错误提示不是给出来了吗,当前请求时间超过了token的过期时间,上一次登录的token已经过期了。
你设置的过期时间是不是不对?每次登录时,把过期时间输出一下。
expiration变量是什么类型?要定义为Long类型。

img

你这个*1000算出来单位是s,你配置的数据难道很大?

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632