From c328804fe53da9c5ea28014951241101e3281feb Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 14 Sep 2024 17:52:33 +0800 Subject: [PATCH] fix code --- .../java/org/dromara/hutool/json/jwt/JWT.java | 26 +++---------------- .../dromara/hutool/json/jwt/package-info.java | 5 +++- .../hutool/json/jwt/Issue3732Test.java | 5 +++- .../org/dromara/hutool/json/jwt/JWTTest.java | 2 +- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/jwt/JWT.java b/hutool-json/src/main/java/org/dromara/hutool/json/jwt/JWT.java index 116807026..94e0ce398 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/jwt/JWT.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/jwt/JWT.java @@ -333,18 +333,7 @@ public class JWT implements RegisteredPayload { * @return JWT字符串 */ public String sign() { - return sign(true); - } - - /** - * 签名生成JWT字符串 - * - * @param addTypeIfNot 如果'typ'头不存在,是否赋值默认值 - * @return JWT字符串 - * @since 5.8.24 - */ - public String sign(final boolean addTypeIfNot) { - return sign(this.signer, addTypeIfNot); + return sign(this.signer); } /** @@ -359,21 +348,12 @@ public class JWT implements RegisteredPayload { *
  • 当用户未定义"alg"时,根据传入的{@link JWTSigner}对象类型,赋值对应ID
  • * * - * @param signer 自定义JWT签名器,非空 - * @param addTypeIfNot 如果'typ'头不存在,是否赋值默认值 + * @param signer 自定义JWT签名器,非空 * @return JWT字符串 */ - public String sign(final JWTSigner signer, final boolean addTypeIfNot) { + public String sign(final JWTSigner signer) { Assert.notNull(signer, () -> new JWTException("No Signer provided!")); - // 检查tye信息 - if (addTypeIfNot) { - final String type = (String) this.header.getClaim(JWTHeader.TYPE); - if (StrUtil.isBlank(type)) { - this.header.setClaim(JWTHeader.TYPE, "JWT"); - } - } - // 检查头信息中是否有算法信息 final String algorithm = (String) this.header.getClaim(JWTHeader.ALGORITHM); if (StrUtil.isBlank(algorithm)) { diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/jwt/package-info.java b/hutool-json/src/main/java/org/dromara/hutool/json/jwt/package-info.java index f2c23a946..837190be5 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/jwt/package-info.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/jwt/package-info.java @@ -15,6 +15,9 @@ */ /** - * JSON Web Token (JWT)封装 + * JSON Web Token (JWT)封装
    + * 规范见:https://datatracker.ietf.org/doc/html/rfc7519 + * + * @author Looly */ package org.dromara.hutool.json.jwt; diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jwt/Issue3732Test.java b/hutool-json/src/test/java/org/dromara/hutool/json/jwt/Issue3732Test.java index ea0c0efe4..d99e54a1a 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/jwt/Issue3732Test.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/jwt/Issue3732Test.java @@ -13,12 +13,15 @@ public class Issue3732Test { @Test void hmacTest() { final JWTSigner SIGNER = JWTSignerUtil.hs256("6sf2f5j2a62a3s8f9032hsf".getBytes()); + final Map headers = new HashMap<>(); + headers.put("typ", "JWT"); + final Map payload = new HashMap<>(); payload.put("name", "test"); payload.put("role", "admin"); // 创建 JWT token - final String token = JWTUtil.createToken(payload, SIGNER); + final String token = JWTUtil.createToken(headers, payload, SIGNER); assertEquals("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiYWRtaW4iLCJuYW1lIjoidGVzdCJ9.pD3Xz41rtXvU3G1c_yS7ir01FXmDvtjjAOU2HYd8MdA", token); } } diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/jwt/JWTTest.java b/hutool-json/src/test/java/org/dromara/hutool/json/jwt/JWTTest.java index 0b2d9733e..93251f181 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/jwt/JWTTest.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/jwt/JWTTest.java @@ -185,7 +185,7 @@ public class JWTTest { final Map map = new HashMap<>(); map.put("test2", 22222222222222L); final JWTSigner jwtSigner = JWTSignerUtil.createSigner(AlgorithmUtil.getAlgorithm("HS256"), Base64.getDecoder().decode("abcdefghijklmn")); - final String sign = JWT.of().addPayloads(map).sign(jwtSigner, true); + final String sign = JWT.of().addPayloads(map).sign(jwtSigner); final Object test2 = JWT.of(sign).getPayload().getClaim("test2"); Assertions.assertEquals(Long.class, test2.getClass()); }