You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.2 KiB

package com.fr.plugin;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import java.util.Date;
/**
* 客户提供的类未做修改
*
*
* @author zst
* @date 2022-06-02
*/
public class JwtUtil {
//JWT密钥
public static final String JWT_SECRET = "xx";
/**
* 验证token是否失效
*
* @param token
* @param secret
* @return true:过期 false:没过期
*/
public static boolean isTokenExpired(String token, String secret) {
Date expiration = getExpirationDateFromToken(token, secret);
return expiration.before(new Date());
}
/**
* 从token中获取用户id
*
* @param token
* @param secret
* @return
*/
public static String getUserIdFromToken(String token, String secret) {
return getClaimFromToken(token, secret).getSubject();
}
/**
* 获取token发布时间
*
* @param token
* @param secret
* @return
*/
public static Date getIssuedAtDateFromToken(String token, String secret) {
return getClaimFromToken(token, secret).getIssuedAt();
}
/**
* 获取token失效时间
*
* @param token
* @param secret
* @return
*/
public static Date getExpirationDateFromToken(String token, String secret) {
return getClaimFromToken(token, secret).getExpiration();
}
/**
* 获取token接收者
*
* @param token
* @param secret
* @return
*/
public static String getAudienceFromToken(String token, String secret) {
return getClaimFromToken(token, secret).getAudience();
}
/**
* 获取私有claim
*
* @param token
* @param key
* @param secret
* @return
*/
public static String getPrivateClaimFromToken(String token, String key, String secret) {
return getClaimFromToken(token, secret).get(key).toString();
}
/**
* 获取jwt的payload部分
*
* @param token
* @param secret
* @return
*/
private static Claims getClaimFromToken(String token, String secret) {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
}
}