From a1f404d5487de9171d62a36342f238b3c1af1aef Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期六, 23 十二月 2023 23:06:47 +0800 Subject: [PATCH] fix 修复 CryptoFilter 代码逻辑问题 --- ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java index 84b85d3..b43881a 100644 --- a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java +++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java @@ -18,6 +18,7 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import java.io.IOException; +import java.io.PrintWriter; /** @@ -37,7 +38,7 @@ HttpServletRequest servletRequest = (HttpServletRequest) request; HttpServletResponse servletResponse = (HttpServletResponse) response; - boolean encryptFlag = false; + boolean responseFlag = false; ServletRequest requestWrapper = null; ServletResponse responseWrapper = null; EncryptResponseBodyWrapper responseBodyWrapper = null; @@ -48,24 +49,24 @@ if (HttpMethod.PUT.matches(servletRequest.getMethod()) || HttpMethod.POST.matches(servletRequest.getMethod())) { // 鏄惁瀛樺湪鍔犲瘑鏍囧ご String headerValue = servletRequest.getHeader(properties.getHeaderFlag()); + // 鑾峰彇鍔犲瘑娉ㄨВ + ApiEncrypt apiEncrypt = this.getApiEncryptAnnotation(servletRequest); + responseFlag = apiEncrypt != null && apiEncrypt.response(); if (StringUtils.isNotBlank(headerValue)) { // 璇锋眰瑙e瘑 requestWrapper = new DecryptRequestBodyWrapper(servletRequest, properties.getPrivateKey(), properties.getHeaderFlag()); - // 鑾峰彇鍔犲瘑娉ㄨВ - ApiEncrypt apiEncrypt = this.getApiEncryptAnnotation(servletRequest); + } else { + // 鏄惁鏈夋敞瑙o紝鏈夊氨鎶ラ敊锛屾病鏈夋斁琛� if (ObjectUtil.isNotNull(apiEncrypt)) { - // 鍝嶅簲鍔犲瘑鏍囧織 - encryptFlag = apiEncrypt.response(); - } else { - // 鏄惁鏈夋敞瑙o紝鏈夊氨鎶ラ敊锛屾病鏈夋斁琛� - HandlerExceptionResolver exceptionResolver = SpringUtils.getBean(HandlerExceptionResolver.class); + HandlerExceptionResolver exceptionResolver = SpringUtils.getBean("handlerExceptionResolver", HandlerExceptionResolver.class); exceptionResolver.resolveException( servletRequest, servletResponse, null, new ServiceException("娌℃湁璁块棶鏉冮檺锛岃鑱旂郴绠$悊鍛樻巿鏉�", HttpStatus.FORBIDDEN)); + return; } } // 鍒ゆ柇鏄惁鍝嶅簲鍔犲瘑 - if (encryptFlag) { + if (responseFlag) { responseBodyWrapper = new EncryptResponseBodyWrapper(servletResponse); responseWrapper = responseBodyWrapper; } @@ -76,7 +77,7 @@ ObjectUtil.defaultIfNull(requestWrapper, request), ObjectUtil.defaultIfNull(responseWrapper, response)); - if (encryptFlag) { + if (responseFlag) { servletResponse.reset(); // 瀵瑰師濮嬪唴瀹瑰姞瀵� String encryptContent = responseBodyWrapper.getEncryptContent( -- Gitblit v1.9.3