Jelajahi Sumber

代码优化

woody 1 tahun lalu
induk
melakukan
328e4500f3
15 mengubah file dengan 150 tambahan dan 135 penghapusan
  1. 12 0
      framework-base/src/main/java/com/chelvc/framework/base/context/JacksonContextHolder.java
  2. 87 0
      framework-base/src/main/java/com/chelvc/framework/base/context/SessionContextHolder.java
  3. 4 3
      framework-base/src/main/java/com/chelvc/framework/base/interceptor/GlobalExceptionInterceptor.java
  4. 2 3
      framework-base/src/main/java/com/chelvc/framework/base/interceptor/RequestLoggingInterceptor.java
  5. 2 2
      framework-base/src/main/java/com/chelvc/framework/base/interceptor/UnifiedResponseInterceptor.java
  6. 10 99
      framework-base/src/main/java/com/chelvc/framework/base/util/HttpUtils.java
  7. 6 5
      framework-database/src/main/java/com/chelvc/framework/database/interceptor/DatabaseExceptionInterceptor.java
  8. 4 3
      framework-feign/src/main/java/com/chelvc/framework/feign/util/FeignUtils.java
  9. 4 5
      framework-oauth/src/main/java/com/chelvc/framework/oauth/config/OauthConfigurer.java
  10. 3 3
      framework-oauth/src/main/java/com/chelvc/framework/oauth/interceptor/OauthExceptionInterceptor.java
  11. 3 2
      framework-security/src/main/java/com/chelvc/framework/security/interceptor/PermissionValidateInterceptor.java
  12. 2 2
      framework-security/src/main/java/com/chelvc/framework/security/interceptor/RequestSecurityInterceptor.java
  13. 3 3
      framework-security/src/main/java/com/chelvc/framework/security/interceptor/SecurityExceptionInterceptor.java
  14. 7 3
      framework-security/src/main/java/com/chelvc/framework/security/interceptor/SignatureValidateInterceptor.java
  15. 1 2
      framework-sms/src/main/java/com/chelvc/framework/sms/support/SwitchableCaptchaSmsHandler.java

+ 12 - 0
framework-base/src/main/java/com/chelvc/framework/base/context/JacksonContextHolder.java

@@ -1,6 +1,7 @@
 package com.chelvc.framework.base.context;
 
 import java.io.IOException;
+import java.io.OutputStream;
 import java.util.Objects;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
@@ -61,6 +62,17 @@ public class JacksonContextHolder implements ApplicationContextAware {
         return DEFAULT_SERIALIZER;
     }
 
+    /**
+     * 将对象写入输出流
+     *
+     * @param output 输出流对象
+     * @param value  对象实例
+     * @throws IOException I/O异常
+     */
+    public static void write(@NonNull OutputStream output, Object value) throws IOException {
+        getGlobalSerializer().writeValue(output, value);
+    }
+
     /**
      * 对象序列化
      *

+ 87 - 0
framework-base/src/main/java/com/chelvc/framework/base/context/SessionContextHolder.java

@@ -1,5 +1,7 @@
 package com.chelvc.framework.base.context;
 
+import java.io.IOException;
+import java.io.OutputStream;
 import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Deque;
@@ -13,14 +15,18 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.chelvc.framework.base.model.Platform;
+import com.chelvc.framework.base.model.Result;
 import com.chelvc.framework.base.model.Session;
 import com.chelvc.framework.base.model.Terminal;
 import com.chelvc.framework.base.model.Version;
 import com.chelvc.framework.base.util.HttpUtils;
 import com.chelvc.framework.base.util.ObjectUtils;
 import com.chelvc.framework.base.util.StringUtils;
+import com.fasterxml.jackson.core.JsonEncoding;
 import lombok.NonNull;
 import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.context.request.RequestContextHolder;
@@ -109,6 +115,11 @@ public class SessionContextHolder implements ServletRequestListener {
      */
     public static final String HEADER_ACTUAL_TERMINAL = "Actual-Terminal";
 
+    /**
+     * 请求结果统一封装响应头
+     */
+    public static final String HEADER_UNIFIED_RESPONSE = "Unified-Response-Body";
+
     /**
      * 空会话对象实例
      */
@@ -952,6 +963,82 @@ public class SessionContextHolder implements ServletRequestListener {
         return session;
     }
 
+    /**
+     * 初始化请求结果统一封装响应头
+     *
+     * @param response Http响应对象
+     */
+    public static void initializeUnifiedResponseHeader(@NonNull HttpServletResponse response) {
+        response.setHeader(HEADER_UNIFIED_RESPONSE, String.valueOf(true));
+    }
+
+    /**
+     * 相应请求结果
+     *
+     * @param response Http响应对象
+     * @param result   请求结果
+     * @throws IOException I/O异常
+     */
+    public static void response(@NonNull HttpServletResponse response, @NonNull Result<?> result) throws IOException {
+        response.setStatus(result.getCode());
+        response.setContentType(MediaType.APPLICATION_JSON_VALUE);
+        response.setCharacterEncoding(JsonEncoding.UTF8.getJavaName());
+        initializeUnifiedResponseHeader(response);
+        OutputStream output = response.getOutputStream();
+        JacksonContextHolder.write(output, result);
+        output.flush();
+    }
+
+    /**
+     * 获取会话消息内容
+     *
+     * @param request Http请求对象
+     * @param type    消息类型
+     * @param message 消息内容
+     * @return 消息内容
+     */
+    public static String getSessionMessage(HttpServletRequest request, Object type, String message) {
+        Session session = SessionContextHolder.getSession(false);
+        Long id = ObjectUtils.ifNull(session, Session::getId);
+        String host = ObjectUtils.ifNull(session, Session::getHost);
+        String device = ObjectUtils.ifNull(session, Session::getDevice);
+        Platform platform = ObjectUtils.ifNull(session, Session::getPlatform);
+        Terminal terminal = ObjectUtils.ifNull(session, Session::getTerminal);
+        String version = ObjectUtils.ifNull(session, Session::getVersion);
+        Long timestamp = ObjectUtils.ifNull(session, Session::getTimestamp);
+        String uri = ObjectUtils.ifNull(request, HttpServletRequest::getRequestURI);
+        String method = ObjectUtils.ifNull(request, HttpServletRequest::getMethod);
+        return String.format("[%s] [%s] [%s] [%s] [%s] [%d] [%s %s] [%d] [%s]: %s",
+                host, platform, terminal, version, device, id, method, uri, timestamp, type, message
+        );
+    }
+
+    /**
+     * 获取会话消息内容
+     *
+     * @param request   Http请求对象
+     * @param status    Http状态码
+     * @param exception 异常对象
+     * @return 消息内容
+     */
+    public static String getSessionMessage(@NonNull HttpServletRequest request, @NonNull HttpStatus status,
+                                           @NonNull Exception exception) {
+        return getSessionMessage(request, status, exception.getMessage());
+    }
+
+    /**
+     * 获取会话消息内容
+     *
+     * @param request   Http请求对象
+     * @param status    Http状态码
+     * @param exception 异常信息
+     * @return 消息内容
+     */
+    public static String getSessionMessage(@NonNull HttpServletRequest request, @NonNull HttpStatus status,
+                                           String exception) {
+        return getSessionMessage(request, status.value(), exception);
+    }
+
     @Override
     public void requestInitialized(ServletRequestEvent event) {
         setSession(this.initializeSession((HttpServletRequest) event.getServletRequest()));

+ 4 - 3
framework-base/src/main/java/com/chelvc/framework/base/interceptor/GlobalExceptionInterceptor.java

@@ -13,6 +13,7 @@ import javax.validation.ConstraintViolation;
 import javax.validation.ConstraintViolationException;
 import javax.validation.ValidationException;
 
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.exception.BusinessException;
 import com.chelvc.framework.base.exception.ParameterInvalidException;
 import com.chelvc.framework.base.exception.ResourceInvalidException;
@@ -190,7 +191,7 @@ public class GlobalExceptionInterceptor implements ErrorController {
         if (StringUtils.isEmpty(message)) {
             message = status.getReasonPhrase();
         }
-        message = HttpUtils.getExceptionMessage(request, status, message);
+        message = SessionContextHolder.getSessionMessage(request, status, message);
         if (status.is4xxClientError()) {
             log.warn(message);
         } else {
@@ -216,7 +217,7 @@ public class GlobalExceptionInterceptor implements ErrorController {
     public Object error(HttpServletRequest request, HttpServletResponse response, Exception exception) {
         HttpStatus status = HttpUtils.getStatus(response.getStatus());
         this.log(request, status, exception);
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
         return Result.build(status);
     }
 
@@ -234,7 +235,7 @@ public class GlobalExceptionInterceptor implements ErrorController {
         HttpStatus status = HttpUtils.getStatus(result.getCode());
         this.log(request, status, exception);
         response.setStatus(status.value());
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
         return result;
     }
 }

+ 2 - 3
framework-base/src/main/java/com/chelvc/framework/base/interceptor/RequestLoggingInterceptor.java

@@ -11,7 +11,6 @@ import ch.qos.logback.classic.turbo.TurboFilter;
 import ch.qos.logback.core.spi.FilterReply;
 import com.chelvc.framework.base.context.ApplicationContextHolder;
 import com.chelvc.framework.base.context.SessionContextHolder;
-import com.chelvc.framework.base.util.HttpUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.ProceedingJoinPoint;
@@ -67,11 +66,11 @@ public class RequestLoggingInterceptor implements SmartInitializingSingleton {
         HttpServletRequest request = SessionContextHolder.getRequest();
         boolean printable = this.isPrintable(point) && log.isDebugEnabled();
         if (printable) {
-            log.debug(HttpUtils.message(request, "REQUEST", Arrays.toString(point.getArgs())));
+            log.debug(SessionContextHolder.getSessionMessage(request, "REQUEST", Arrays.toString(point.getArgs())));
         }
         Object value = point.proceed();
         if (printable) {
-            log.debug(HttpUtils.message(request, "RESPONSE", String.valueOf(value)));
+            log.debug(SessionContextHolder.getSessionMessage(request, "RESPONSE", String.valueOf(value)));
         }
         return value;
     }

+ 2 - 2
framework-base/src/main/java/com/chelvc/framework/base/interceptor/UnifiedResponseInterceptor.java

@@ -4,7 +4,7 @@ import java.util.Objects;
 import javax.servlet.http.HttpServletResponse;
 
 import com.chelvc.framework.base.annotation.UnifiedResponseBody;
-import com.chelvc.framework.base.util.HttpUtils;
+import com.chelvc.framework.base.context.SessionContextHolder;
 import lombok.NonNull;
 import org.springframework.core.MethodParameter;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -66,7 +66,7 @@ public class UnifiedResponseInterceptor implements HandlerMethodReturnValueHandl
                                   NativeWebRequest request) throws Exception {
         // 设置统一封装返回对象请求头
         HttpServletResponse response = Objects.requireNonNull(request.getNativeResponse(HttpServletResponse.class));
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
 
         // 统一包转请求结果
         value = this.wrapper.wrap(request, method, value);

+ 10 - 99
framework-base/src/main/java/com/chelvc/framework/base/util/HttpUtils.java

@@ -17,13 +17,6 @@ import java.util.regex.Pattern;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.chelvc.framework.base.context.JacksonContextHolder;
-import com.chelvc.framework.base.context.SessionContextHolder;
-import com.chelvc.framework.base.model.Platform;
-import com.chelvc.framework.base.model.Result;
-import com.chelvc.framework.base.model.Session;
-import com.chelvc.framework.base.model.Terminal;
-import com.fasterxml.jackson.core.JsonEncoding;
 import com.google.common.collect.Maps;
 import lombok.NonNull;
 import org.springframework.http.HttpStatus;
@@ -36,11 +29,6 @@ import org.springframework.http.MediaType;
  * @date 2023/4/5
  */
 public final class HttpUtils {
-    /**
-     * 请求结果统一封装响应头
-     */
-    public static final String UNIFIED_RESPONSE_HEADER = "Unified-Response-Body";
-
     /**
      * 资源分隔符匹配模式
      */
@@ -165,35 +153,26 @@ public final class HttpUtils {
     }
 
     /**
-     * 初始化请求结果统一封装响应头
-     *
-     * @param response Http响应对象
-     */
-    public static void initializeUnifiedResponseHeader(@NonNull HttpServletResponse response) {
-        response.setHeader(UNIFIED_RESPONSE_HEADER, String.valueOf(true));
-    }
-
-    /**
-     * 响应文件流
+     * 响应文件
      *
      * @param response Http响应对象
      * @param file     文件对象
      * @throws IOException I/O异常
      */
-    public static void writeFileResponse(@NonNull HttpServletResponse response, @NonNull File file) throws IOException {
-        writeFileResponse(response, file, file.getName());
+    public static void write(@NonNull HttpServletResponse response, @NonNull File file) throws IOException {
+        write(response, file, file.getName());
     }
 
     /**
-     * 响应文件
+     * 响应文件
      *
      * @param response Http响应对象
      * @param file     文件对象
      * @param filename 文件名称
      * @throws IOException I/O异常
      */
-    public static void writeFileResponse(@NonNull HttpServletResponse response, @NonNull File file,
-                                         @NonNull String filename) throws IOException {
+    public static void write(@NonNull HttpServletResponse response, @NonNull File file, @NonNull String filename)
+            throws IOException {
         // 设置响应头
         response.reset();
         response.addHeader("Content-Length", String.valueOf(file.length()));
@@ -213,37 +192,18 @@ public final class HttpUtils {
         }
     }
 
-    /**
-     * 返回统一封装请求结果
-     *
-     * @param response Http响应对象
-     * @param result   请求结果
-     * @throws IOException I/O异常
-     */
-    public static void writeUnifiedResponse(@NonNull HttpServletResponse response, @NonNull Result<?> result)
-            throws IOException {
-        response.setStatus(result.getCode());
-        response.setContentType(MediaType.APPLICATION_JSON_VALUE);
-        response.setCharacterEncoding(JsonEncoding.UTF8.getJavaName());
-        initializeUnifiedResponseHeader(response);
-        OutputStream outputStream = response.getOutputStream();
-        JacksonContextHolder.getGlobalSerializer().writeValue(outputStream, result);
-        outputStream.flush();
-    }
-
     /**
      * 对象URL编码
      *
-     * @param object 编码对象
+     * @param original 原始信息
      * @return 对象编码结果
      */
-    public static String encode(Object object) {
-        String serialize = JacksonContextHolder.serialize(object);
-        if (StringUtils.isEmpty(serialize)) {
+    public static String encode(String original) {
+        if (StringUtils.isEmpty(original)) {
             return StringUtils.EMPTY;
         }
         try {
-            return URLEncoder.encode(serialize, "UTF-8");
+            return URLEncoder.encode(original, "UTF-8");
         } catch (UnsupportedEncodingException e) {
             throw new RuntimeException(e);
         }
@@ -290,29 +250,6 @@ public final class HttpUtils {
         return domain.concat(StringUtils.URI_SEPARATOR).concat(uri);
     }
 
-    /**
-     * 构建Http请求消息
-     *
-     * @param request Http请求对象
-     * @param type    消息类型
-     * @param message 消息内容
-     * @return 消息
-     */
-    public static String message(HttpServletRequest request, Object type, String message) {
-        Session session = SessionContextHolder.getSession(false);
-        Long id = ObjectUtils.ifNull(session, Session::getId);
-        String host = ObjectUtils.ifNull(session, Session::getHost);
-        String device = ObjectUtils.ifNull(session, Session::getDevice);
-        Platform platform = ObjectUtils.ifNull(session, Session::getPlatform);
-        Terminal terminal = ObjectUtils.ifNull(session, Session::getTerminal);
-        String version = ObjectUtils.ifNull(session, Session::getVersion);
-        String uri = ObjectUtils.ifNull(request, HttpServletRequest::getRequestURI);
-        String method = ObjectUtils.ifNull(request, HttpServletRequest::getMethod);
-        return String.format("[%s] [%s] [%s] [%s] [%s] [%d] [%s %s] [%s]: %s",
-                host, platform, terminal, version, device, id, method, uri, type, message
-        );
-    }
-
     /**
      * Http请求参数序列化
      *
@@ -358,30 +295,4 @@ public final class HttpUtils {
             return buffer.length() == 0 ? (key + "=") : buffer.toString();
         }, ordering);
     }
-
-    /**
-     * 获取异常消息
-     *
-     * @param request   Http请求对象
-     * @param status    Http状态码
-     * @param exception 异常信息
-     * @return 异常消息
-     */
-    public static String getExceptionMessage(@NonNull HttpServletRequest request, @NonNull HttpStatus status,
-                                             @NonNull Exception exception) {
-        return getExceptionMessage(request, status, exception.getMessage());
-    }
-
-    /**
-     * 获取异常消息
-     *
-     * @param request   Http请求对象
-     * @param status    Http状态码
-     * @param exception 异常信息
-     * @return 异常消息
-     */
-    public static String getExceptionMessage(@NonNull HttpServletRequest request, @NonNull HttpStatus status,
-                                             String exception) {
-        return message(request, status.value(), exception);
-    }
 }

+ 6 - 5
framework-database/src/main/java/com/chelvc/framework/database/interceptor/DatabaseExceptionInterceptor.java

@@ -3,10 +3,10 @@ package com.chelvc.framework.database.interceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.exception.ParameterInvalidException;
 import com.chelvc.framework.base.model.Result;
 import com.chelvc.framework.base.util.ErrorUtils;
-import com.chelvc.framework.base.util.HttpUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.mybatis.spring.MyBatisSystemException;
 import org.springframework.core.Ordered;
@@ -37,10 +37,10 @@ public class DatabaseExceptionInterceptor {
     @ExceptionHandler(ParameterInvalidException.class)
     public Result<?> exception(HttpServletRequest request, HttpServletResponse response,
                                ParameterInvalidException exception) {
-        log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.PRECONDITION_FAILED, exception));
+        log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.PRECONDITION_FAILED, exception));
         Result<?> result = Result.build(HttpStatus.PRECONDITION_FAILED, exception.getErrors());
         response.setStatus(result.getCode());
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
         return result;
     }
 
@@ -59,10 +59,11 @@ public class DatabaseExceptionInterceptor {
         if (parameterInvalidException != null) {
             return this.exception(request, response, parameterInvalidException);
         }
-        log.error(HttpUtils.getExceptionMessage(request, HttpStatus.INTERNAL_SERVER_ERROR, exception), exception);
+        String message = SessionContextHolder.getSessionMessage(request, HttpStatus.INTERNAL_SERVER_ERROR, exception);
+        log.error(message, exception);
         Result<?> result = Result.build(HttpStatus.INTERNAL_SERVER_ERROR);
         response.setStatus(result.getCode());
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
         return result;
     }
 }

+ 4 - 3
framework-feign/src/main/java/com/chelvc/framework/feign/util/FeignUtils.java

@@ -2,7 +2,7 @@ package com.chelvc.framework.feign.util;
 
 import java.util.Collection;
 
-import com.chelvc.framework.base.util.HttpUtils;
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.util.ObjectUtils;
 import feign.Response;
 import lombok.NonNull;
@@ -24,8 +24,9 @@ public final class FeignUtils {
      * @return true/false
      */
     public static boolean isUnifiedResponseBody(@NonNull Response response) {
-        Collection<String> values = ObjectUtils.ifNull(response.headers(),
-                headers -> headers.get(HttpUtils.UNIFIED_RESPONSE_HEADER));
+        Collection<String> values = ObjectUtils.ifNull(
+                response.headers(), headers -> headers.get(SessionContextHolder.HEADER_UNIFIED_RESPONSE)
+        );
         return values != null && values.stream().anyMatch(Boolean::valueOf);
     }
 }

+ 4 - 5
framework-oauth/src/main/java/com/chelvc/framework/oauth/config/OauthConfigurer.java

@@ -9,7 +9,6 @@ import javax.crypto.spec.SecretKeySpec;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.model.Result;
 import com.chelvc.framework.base.util.AESUtils;
-import com.chelvc.framework.base.util.HttpUtils;
 import com.chelvc.framework.base.util.StringUtils;
 import com.chelvc.framework.oauth.context.OauthContextHolder;
 import com.chelvc.framework.oauth.token.RedisTokenActiveValidator;
@@ -158,8 +157,8 @@ public class OauthConfigurer extends WebSecurityConfigurerAdapter {
     @Bean
     public AccessDeniedHandler accessDeniedHandler() {
         return (request, response, exception) -> {
-            log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.FORBIDDEN, exception));
-            HttpUtils.writeUnifiedResponse(response, Result.build(HttpStatus.FORBIDDEN));
+            log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.FORBIDDEN, exception));
+            SessionContextHolder.response(response, Result.build(HttpStatus.FORBIDDEN));
         };
     }
 
@@ -173,8 +172,8 @@ public class OauthConfigurer extends WebSecurityConfigurerAdapter {
                     status = ((BearerTokenError) error).getHttpStatus();
                 }
             }
-            log.warn(HttpUtils.getExceptionMessage(request, status, exception));
-            HttpUtils.writeUnifiedResponse(response, Result.build(status));
+            log.warn(SessionContextHolder.getSessionMessage(request, status, exception));
+            SessionContextHolder.response(response, Result.build(status));
         };
     }
 

+ 3 - 3
framework-oauth/src/main/java/com/chelvc/framework/oauth/interceptor/OauthExceptionInterceptor.java

@@ -3,8 +3,8 @@ package com.chelvc.framework.oauth.interceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.model.Result;
-import com.chelvc.framework.base.util.HttpUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.Ordered;
 import org.springframework.core.annotation.Order;
@@ -35,8 +35,8 @@ public class OauthExceptionInterceptor {
     @ExceptionHandler(BadCredentialsException.class)
     public Result<?> exception(HttpServletRequest request, HttpServletResponse response,
                                BadCredentialsException exception) {
-        log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.UNAUTHORIZED, exception));
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.UNAUTHORIZED, exception));
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
         return Result.build(HttpStatus.UNAUTHORIZED);
     }
 }

+ 3 - 2
framework-security/src/main/java/com/chelvc/framework/security/interceptor/PermissionValidateInterceptor.java

@@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.chelvc.framework.base.context.ApplicationContextHolder;
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.model.Result;
 import com.chelvc.framework.base.util.HttpUtils;
 import com.chelvc.framework.base.util.ObjectUtils;
@@ -54,12 +55,12 @@ public class PermissionValidateInterceptor implements Filter {
         }
 
         // 无访问权限
-        log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.FORBIDDEN, "Permission denied"));
+        log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.FORBIDDEN, "Permission denied"));
         if (StringUtils.isPath(uri, config.getIgnore())) {
             return true;
         }
         response.setStatus(HttpStatus.FORBIDDEN.value());
-        HttpUtils.writeUnifiedResponse(response, Result.build(HttpStatus.FORBIDDEN));
+        SessionContextHolder.response(response, Result.build(HttpStatus.FORBIDDEN));
         return false;
     }
 

+ 2 - 2
framework-security/src/main/java/com/chelvc/framework/security/interceptor/RequestSecurityInterceptor.java

@@ -66,12 +66,12 @@ public class RequestSecurityInterceptor implements Filter {
         }
 
         // 无效请求
-        log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.FORBIDDEN, "Request invalid"));
+        log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.FORBIDDEN, "Request invalid"));
         if (StringUtils.isPath(uri, config.getIgnore())) {
             return true;
         }
         response.setStatus(HttpStatus.FORBIDDEN.value());
-        HttpUtils.writeUnifiedResponse(response, Result.build(HttpStatus.FORBIDDEN));
+        SessionContextHolder.response(response, Result.build(HttpStatus.FORBIDDEN));
         return false;
     }
 

+ 3 - 3
framework-security/src/main/java/com/chelvc/framework/security/interceptor/SecurityExceptionInterceptor.java

@@ -3,8 +3,8 @@ package com.chelvc.framework.security.interceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.model.Result;
-import com.chelvc.framework.base.util.HttpUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.core.Ordered;
 import org.springframework.core.annotation.Order;
@@ -35,8 +35,8 @@ public class SecurityExceptionInterceptor {
     @ExceptionHandler(AccessDeniedException.class)
     public Result<?> exception(HttpServletRequest request, HttpServletResponse response,
                                AccessDeniedException exception) {
-        log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.FORBIDDEN, exception));
-        HttpUtils.initializeUnifiedResponseHeader(response);
+        log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.FORBIDDEN, exception));
+        SessionContextHolder.initializeUnifiedResponseHeader(response);
         return Result.build(HttpStatus.FORBIDDEN);
     }
 }

+ 7 - 3
framework-security/src/main/java/com/chelvc/framework/security/interceptor/SignatureValidateInterceptor.java

@@ -66,17 +66,21 @@ public class SignatureValidateInterceptor implements Filter {
         if (log.isDebugEnabled()) {
             log.debug("Data signature: {} -> {}", payload, ciphertext);
         }
-        if (Objects.equals(ciphertext, request.getHeader(SessionContextHolder.HEADER_SIGNATURE))) {
+        String signature = request.getHeader(SessionContextHolder.HEADER_SIGNATURE);
+        if (log.isDebugEnabled()) {
+            log.debug("Client signature: {}", signature);
+        }
+        if (Objects.equals(ciphertext, signature)) {
             return true;
         }
 
         // 签名无效
-        log.warn(HttpUtils.getExceptionMessage(request, HttpStatus.FORBIDDEN, "Signature invalid"));
+        log.warn(SessionContextHolder.getSessionMessage(request, HttpStatus.FORBIDDEN, "Signature invalid"));
         if (StringUtils.isPath(uri, config.getIgnore())) {
             return true;
         }
         response.setStatus(HttpStatus.FORBIDDEN.value());
-        HttpUtils.writeUnifiedResponse(response, Result.build(HttpStatus.FORBIDDEN));
+        SessionContextHolder.response(response, Result.build(HttpStatus.FORBIDDEN));
         return false;
     }
 

+ 1 - 2
framework-sms/src/main/java/com/chelvc/framework/sms/support/SwitchableCaptchaSmsHandler.java

@@ -10,7 +10,6 @@ import java.util.function.Function;
 import com.chelvc.framework.base.context.ApplicationContextHolder;
 import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.exception.ResourceUnavailableException;
-import com.chelvc.framework.base.util.HttpUtils;
 import com.chelvc.framework.base.util.StringUtils;
 import com.chelvc.framework.redis.util.RedisUtils;
 import com.chelvc.framework.sms.Captcha;
@@ -103,7 +102,7 @@ public class SwitchableCaptchaSmsHandler implements CaptchaSmsHandler {
             }
             this.redisTemplate.opsForValue().set(key, captcha, this.properties.getExpiration(), TimeUnit.SECONDS);
             if (log.isDebugEnabled()) {
-                log.debug(HttpUtils.message(SessionContextHolder.getRequest(), mobile, code));
+                log.debug(SessionContextHolder.getSessionMessage(SessionContextHolder.getRequest(), mobile, code));
             }
             return SmsSession.builder().token(token).expiration(this.properties.getExpiration()).build();
         } catch (RuntimeException e) {