自己的jwt代码一直没有动过,但刚才测试后台接口时,测试任何方法都会报出未登录,请登录的提示,但是验证码是可以正常获取的。打开ida的后台显示jwt已过期,但是以前测试时jwt一直没有问题,帮帮忙,个人觉得可能不是jwt问题,因为之前跟着视频做rabbitmq的消费端幂等性运行的时候还好好的,谢谢xd!
这个是测试是的消息:
这个是idea的报错:
这个是jwtUtil文件内容:
这个是JwtAuthenticationTokenFilter的内容:
自己的jwt代码一直没有动过,但刚才测试后台接口时,测试任何方法都会报出未登录,请登录的提示,但是验证码是可以正常获取的。打开ida的后台显示jwt已过期,但是以前测试时jwt一直没有问题,帮帮忙,个人觉得可能不是jwt问题,因为之前跟着视频做rabbitmq的消费端幂等性运行的时候还好好的,谢谢xd!
这个是测试是的消息:
这个是idea的报错:
这个是jwtUtil文件内容:
这个是JwtAuthenticationTokenFilter的内容:
登录也不行吗?参考:
@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;
}
}