This commit is contained in:
Looly
2024-09-14 16:17:16 +08:00
parent 7d3b614235
commit 191339d91a
3 changed files with 48 additions and 4 deletions

View File

@@ -333,7 +333,18 @@ public class JWT implements RegisteredPayload<JWT> {
* @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(final boolean addTypeIfNot) {
return sign(this.signer, addTypeIfNot);
}
/**
@@ -348,12 +359,21 @@ public class JWT implements RegisteredPayload<JWT> {
* <li>当用户未定义"alg"时,根据传入的{@link JWTSigner}对象类型赋值对应ID</li>
* </ul>
*
* @param signer 自定义JWT签名器非空
* @param signer 自定义JWT签名器非空
* @param addTypeIfNot 如果'typ'头不存在,是否赋值默认值
* @return JWT字符串
*/
public String sign(final JWTSigner signer) {
public String sign(final JWTSigner signer, final boolean addTypeIfNot) {
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)) {