From e86c19c37af82c4407b69d2fee77e673cf1b7d22 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Tue, 22 Aug 2023 16:39:37 +0800 Subject: [PATCH] Signature validation ignore empty values --- .../java/com/schbrain/common/util/StreamUtils.java | 10 +++++++--- .../web/exception/DefaultExceptionTranslator.java | 6 +----- .../AbstractSignatureValidationInterceptor.java | 7 +++---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java index 533f038..b80ce58 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/StreamUtils.java @@ -158,11 +158,15 @@ public class StreamUtils { } public static String join(Iterable data, String delimiter) { - return join(data, delimiter, Objects::toString); + return join(data, delimiter, Objects::toString, any -> true); } - public static String join(Iterable data, String delimiter, Function toStringFunction) { - return from(data).map(toStringFunction).collect(joining(delimiter)); + public static String join(Iterable data, String delimiter, Predicate predicate) { + return join(data, delimiter, Objects::toString, predicate); + } + + public static String join(Iterable data, String delimiter, Function toStringFunction, Predicate predicate) { + return from(data).map(toStringFunction).filter(predicate).collect(joining(delimiter)); } public static List split(String data) { diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultExceptionTranslator.java b/commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultExceptionTranslator.java index 932b7a6..4eac2de 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultExceptionTranslator.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/exception/DefaultExceptionTranslator.java @@ -12,11 +12,7 @@ import org.springframework.core.Ordered; */ public class DefaultExceptionTranslator implements ExceptionTranslator> { - private final boolean isProduction; - - public DefaultExceptionTranslator() { - this.isProduction = EnvUtils.isProduction(); - } + private final boolean isProduction = EnvUtils.isProduction(); @Override public ResponseDTO translate(Throwable throwable, int code, int action, String message) { diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java b/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java index 216646b..8605b14 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/support/signature/AbstractSignatureValidationInterceptor.java @@ -1,7 +1,7 @@ package com.schbrain.common.web.support.signature; import cn.hutool.crypto.digest.DigestUtil; -import com.google.common.base.Joiner; +import com.schbrain.common.util.StreamUtils; import com.schbrain.common.web.support.BaseHandlerInterceptor; import org.apache.commons.lang3.StringUtils; import org.springframework.web.method.HandlerMethod; @@ -9,6 +9,7 @@ import org.springframework.web.util.ContentCachingRequestWrapper; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; import static cn.hutool.core.text.StrPool.UNDERLINE; @@ -17,8 +18,6 @@ import static org.springframework.web.util.WebUtils.getNativeRequest; public abstract class AbstractSignatureValidationInterceptor extends BaseHandlerInterceptor { - private static final Joiner JOINER = Joiner.on(UNDERLINE).skipNulls(); - private static final String SCH_APP_KEY = "Sch-App-Key"; private static final String SCH_TIMESTAMP = "Sch-Timestamp"; private static final String SCH_SIGNATURE = "Sch-Signature"; @@ -69,7 +68,7 @@ public abstract class AbstractSignatureValidationInterceptor