public class JwtUtils {
private static final long EXPIRE = 6000 * 60 * 24 * 7;
private static final String SECRET = "htt.net256";
private static final String TOKEN_PREFIX = "version-htt";
private static final String SUBJECT = "htt";
//生成token
public static String generateToken(User user) {
String token = Jwts.builder().setSubject(SUBJECT)
.claim("id", user.getId())
.claim("name", user.getName())
.claim("head_img", user.getHeadImg())
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
.signWith(SignatureAlgorithm.ES256, SECRET)
.compact();
token = TOKEN_PREFIX + token;
return token;
}
//校验token
public static Claims checkJwtToken(String token) {
try {
final Claims claim = Jwts.parser().setSigningKey(SECRET).parseClaimsJwt(token.replace(TOKEN_PREFIX, "")).getBody();
return claim;
}catch (Exception e) {
return null;
}
}
}
注意:如果token生成失败,出现这个错误 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Filtered request failed.] with root cause,请将
.signWith(SignatureAlgorithm.ES256, SECRET)改为.signWith(SignatureAlgorithm.HS256, SECRET)