冲刺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;
    }

}
posted @ 2024-06-17 10:53  起名字真难_qmz  阅读(14)  评论(0)    收藏  举报