冲刺2
服务端代码:
public class JwtUtil {
private static final String KEY = "wal";
//接收业务数据,生成token并返回
public static String genToken(Map<String, Object> claims) {
com.auth0.jwt.JWTCreator.Builder builder = JWT.create();
// 单独添加每个Claim
claims.forEach((key, value) -> {
if (value instanceof Boolean) {
builder.withClaim(key, (Boolean) value);
} else if (value instanceof Integer) {
builder.withClaim(key, (Integer) value);
} else if (value instanceof Long) {
builder.withClaim(key, (Long) value);
} else if (value instanceof Double) {
builder.withClaim(key, (Double) value);
} else if (value instanceof String) {
builder.withClaim(key, (String) value);
} else {
throw new IllegalArgumentException("Unsupported claim type for key: " + key);
}
});
return builder
.withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12)) // 12小时有效期
.sign(Algorithm.HMAC256(KEY));
}
//接收token,验证token,并返回业务数据
public static Map<String, Object> parseToken(String token) {
Algorithm algorithm = Algorithm.HMAC256(KEY);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
Map<String, Object> claims = new HashMap<>();
jwt.getClaims().forEach((key, value) -> claims.put(key, value.as(Object.class))); // 获取每个Claim的值
return claims;
}
}