记录报错:JwtUtil.verify(Ljava/lang/String;)Ljava/lang/Integer
protected Integer verifyTokenReturnUid(String token) {
if (jwtUtil.verify(token) == 2) {
throw new CustomException(510, "token错误");
}else if (jwtUtil.verify(token) == 1){
throw new CustomException(520, "token过期");
}
int userId = jwtUtil.getUserId(token);
Users user = usersMapper.selectByPrimaryKey(userId);
if (user == null) {
throw new CustomException("token错误");
}
if (user.getStatus() == UserStatusEnum.BAN.type) {
throw new CustomException(401, "用户已封禁");
}
return userId;
}
jwtUtil.getUserId(token)返回类型改为Integer:
protected Integer verifyTokenReturnUid(String token) {
if (jwtUtil.verify(token) == 2) {
throw new CustomException(510, "token错误");
}else if (jwtUtil.verify(token) == 1){
throw new CustomException(520, "token过期");
}
Integer userId = jwtUtil.getUserId(token);
Users user = usersMapper.selectByPrimaryKey(userId);
if (user == null) {
throw new CustomException("token错误");
}
if (user.getStatus() == UserStatusEnum.BAN.type) {
throw new CustomException(401, "用户已封禁");
}
return userId;
}
verify:
/**
* 校验token是否正确
* @param token 密钥
* @return 是否正确
*/
public Integer verify(String token) {
try {
Algorithm algorithm = Algorithm.HMAC256(shiroJwtProperties.getSecret());
JWTVerifier verifier = JWT.require(algorithm)
.build();
DecodedJWT jwt = verifier.verify(token);
return 0;
} catch (TokenExpiredException e){
return 1;
} catch (Exception e) {
return 2;
}
}
getUserId:
/**
* 根据token获取用户ID
* @param token
* @return
*/
public Integer getUserId(String token) {
try {
DecodedJWT jwt = JWT.decode(token);
return jwt.getClaim("userId").asInt();
} catch (JWTDecodeException e) {
return null;
}
}