常用Token生成
/**
* token加密密钥
*/
public static final String TOKEN_KEY = "eq212341njcjbasdalsa209cmzxcnk";
/**
* token过期时间基本永久
*/
public static final Long ACCESS_TOKEN_EXPIRE = 1000L * 60L * 60L * 24L * 99999L;
/**
* 生成用户token,传入用户信息存储
*
* @param userInfo 用户信息(JSON格式的)
* @return token信息
*/
public static String createToken(String userInfo) {
return Jwts.builder()
.setHeaderParam("typ", "JWT")
.setHeaderParam("alg", "HS256")
.setSubject("user")
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + ACCESS_TOKEN_EXPIRE))
.setId(userInfo)
.signWith(SignatureAlgorithm.HS256, TOKEN_KEY)
.compact();
}
/**
* 判断token是否有效
*
* @param jwtToken token
* @return 布尔值
*/
public static boolean checkToken(String jwtToken) {
if (StringUtils.isEmpty(jwtToken)) {
return false;
}
try {
Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(jwtToken);
} catch (Exception e) {
return false;
}
return true;
}
/**
* token获取用户信息
*
* @param jwtToken 用户token
* @return
*/
public static String getUserInfo(String jwtToken) {
return Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(jwtToken).getBody().getId();
}
/**
* 获取token主体
*
* @param jwtToken
* @return
*/
public static Claims getClaims(String jwtToken) {
return Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(jwtToken).getBody();
}