- 通过JWT生成token令牌来验证用户是否登录
导入依赖
com.auth0
java-jwt
3.18.2
具体方法
public class JWTUtil {
//密钥
private static final String SECRET = "123456789";
//过期时间
private static final long EXPIRE_TIME = 7 * 24 * 60 * 60 * 1000;
public static String sign (Map map){
// 七天过期
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DATE,7);
final JWTCreator.Builder builder = JWT.create();
map.forEach((k,v) ->{
builder.withClaim(k,v);
});
String token = builder.withExpiresAt(instance.getTime())
.sign(Algorithm.HMAC256(SECRET));
return token;
}
public static Boolean verify (String token){
DecodedJWT verify = null;
try {
verify = JWT.require(Algorithm.HMAC256(SECRET)).build().verify(token);
return true;
}catch (SignatureVerificationException e){
System.out.println("无效签名");
return false;
}catch (TokenExpiredException e){
System.out.println("token过期");
return false;
}catch (AlgorithmMismatchException e){
System.out.println("算法不一致");
return false;
}catch (Exception e){
System.out.println("无效token");
return false;
}
}
public static String getUser(String token){
DecodedJWT verify = JWT.decode(token);
String userName = verify.getClaim("name").asString();
return userName;
}
}



