From 0fd001f229ab3f5c88cf4b327e4e635e616dbc05 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期日, 04 二月 2024 10:30:15 +0800 Subject: [PATCH] update 优化 GET 方法响应体支持加密 --- ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java | 29 +++++++++++++---------------- 1 files changed, 13 insertions(+), 16 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 76ce37e..16d24fc 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 @@ -36,8 +36,9 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest servletRequest = (HttpServletRequest) request; HttpServletResponse servletResponse = (HttpServletResponse) response; - - boolean encryptFlag = false; + // 鑾峰彇鍔犲瘑娉ㄨВ + ApiEncrypt apiEncrypt = this.getApiEncryptAnnotation(servletRequest); + boolean responseFlag = apiEncrypt != null && apiEncrypt.response(); ServletRequest requestWrapper = null; ServletResponse responseWrapper = null; EncryptResponseBodyWrapper responseBodyWrapper = null; @@ -51,32 +52,29 @@ 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"); + HandlerExceptionResolver exceptionResolver = SpringUtils.getBean("handlerExceptionResolver", HandlerExceptionResolver.class); exceptionResolver.resolveException( servletRequest, servletResponse, null, new ServiceException("娌℃湁璁块棶鏉冮檺锛岃鑱旂郴绠$悊鍛樻巿鏉�", HttpStatus.FORBIDDEN)); + return; } } - // 鍒ゆ柇鏄惁鍝嶅簲鍔犲瘑 - if (encryptFlag) { - responseBodyWrapper = new EncryptResponseBodyWrapper(servletResponse); - responseWrapper = responseBodyWrapper; - } } + } + // 鍒ゆ柇鏄惁鍝嶅簲鍔犲瘑 + if (responseFlag) { + responseBodyWrapper = new EncryptResponseBodyWrapper(servletResponse); + responseWrapper = responseBodyWrapper; } chain.doFilter( ObjectUtil.defaultIfNull(requestWrapper, request), ObjectUtil.defaultIfNull(responseWrapper, response)); - if (encryptFlag) { + if (responseFlag) { servletResponse.reset(); // 瀵瑰師濮嬪唴瀹瑰姞瀵� String encryptContent = responseBodyWrapper.getEncryptContent( @@ -94,7 +92,6 @@ // 鑾峰彇娉ㄨВ try { HandlerExecutionChain mappingHandler = handlerMapping.getHandler(servletRequest); - System.out.println(mappingHandler); if (ObjectUtil.isNotNull(mappingHandler)) { Object handler = mappingHandler.getHandler(); if (ObjectUtil.isNotNull(handler)) { -- Gitblit v1.9.3