diff --git a/CHANGELOG.md b/CHANGELOG.md index adeedf528..8f600f77d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,11 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.24(2023-11-14) +# 5.8.24(2023-11-15) ### 🐣新特性 * 【cache 】 Cache增加get重载,可自定义超时时间(issue#I8G0DL@Gitee) +* 【cache 】 JWT#sign增加重载,可选是否增加默认的typ参数(issue#3386@Github) ### 🐞Bug修复 * 【core 】 修复LocalDateTime#parseDate未判断空问题问题(issue#I8FN7F@Gitee) diff --git a/hutool-jwt/src/main/java/cn/hutool/jwt/JWT.java b/hutool-jwt/src/main/java/cn/hutool/jwt/JWT.java index e7214aa48..1d511d74c 100755 --- a/hutool-jwt/src/main/java/cn/hutool/jwt/JWT.java +++ b/hutool-jwt/src/main/java/cn/hutool/jwt/JWT.java @@ -302,7 +302,18 @@ public class JWT implements RegisteredPayload { * @return JWT字符串 */ public String sign() { - return sign(this.signer); + return sign(true); + } + + /** + * 签名生成JWT字符串 + * + * @param addTypeIfNot 如果'typ'头不存在,是否赋值默认值 + * @return JWT字符串 + * @since 5.8.24 + */ + public String sign(boolean addTypeIfNot) { + return sign(this.signer, addTypeIfNot); } /** @@ -312,19 +323,33 @@ public class JWT implements RegisteredPayload { * @return JWT字符串 */ public String sign(JWTSigner signer) { + return sign(signer, true); + } + + /** + * 签名生成JWT字符串 + * + * @param signer JWT签名器 + * @param addTypeIfNot 如果'typ'头不存在,是否赋值默认值 + * @return JWT字符串 + * @since 5.8.24 + */ + public String sign(JWTSigner signer, boolean addTypeIfNot) { Assert.notNull(signer, () -> new JWTException("No Signer provided!")); // 检查tye信息 - final String type = (String) this.header.getClaim(JWTHeader.TYPE); - if (StrUtil.isBlank(type)) { - this.header.setClaim(JWTHeader.TYPE, "JWT"); + 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)) { this.header.setClaim(JWTHeader.ALGORITHM, - AlgorithmUtil.getId(signer.getAlgorithm())); + AlgorithmUtil.getId(signer.getAlgorithm())); } final String headerBase64 = Base64.encodeUrlSafe(this.header.toString(), charset);