文件加解密修改
This commit is contained in:
+87
@@ -0,0 +1,87 @@
|
|||||||
|
package com.jero.modules.docking.download.config;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.springframework.core.Ordered;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.filter.OncePerRequestFilter;
|
||||||
|
import org.springframework.web.util.ContentCachingRequestWrapper;
|
||||||
|
import org.springframework.web.util.ContentCachingResponseWrapper;
|
||||||
|
import org.springframework.web.util.WebUtils;
|
||||||
|
|
||||||
|
import javax.servlet.FilterChain;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lqt
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/11/24 11:36
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class ContentCachingWrapperFilter extends OncePerRequestFilter implements Ordered {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOrder() {
|
||||||
|
return Ordered.LOWEST_PRECEDENCE - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
// 包装流,可重复读取
|
||||||
|
if (!(request instanceof ContentCachingRequestWrapper)) {
|
||||||
|
request = new ContentCachingRequestWrapper(request);
|
||||||
|
}
|
||||||
|
if (!(response instanceof ContentCachingResponseWrapper)) {
|
||||||
|
response = new ContentCachingResponseWrapper(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
filterChain.doFilter(request, response);
|
||||||
|
updateResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新响应(不操作这一步,会导致接口响应空白)
|
||||||
|
*
|
||||||
|
* @param response 响应对象
|
||||||
|
* @throws IOException /
|
||||||
|
*/
|
||||||
|
public static void updateResponse(HttpServletResponse response) throws IOException {
|
||||||
|
ContentCachingResponseWrapper responseWrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||||
|
Objects.requireNonNull(responseWrapper).copyBodyToResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取请求体
|
||||||
|
*
|
||||||
|
* @param request 请求对象
|
||||||
|
* @return 请求体
|
||||||
|
*/
|
||||||
|
public static String getRequestBody(HttpServletRequest request) throws IOException {
|
||||||
|
String requestBody = "";
|
||||||
|
ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class);
|
||||||
|
if (wrapper != null) {
|
||||||
|
requestBody = IOUtils.toString(wrapper.getContentAsByteArray(), StandardCharsets.UTF_8.toString());
|
||||||
|
}
|
||||||
|
return requestBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取响应体
|
||||||
|
*
|
||||||
|
* @param response 响应对象
|
||||||
|
* @return 响应体
|
||||||
|
*/
|
||||||
|
public static InputStream getResponseBody(HttpServletResponse response) throws IOException {
|
||||||
|
InputStream responseBody = null;
|
||||||
|
ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
||||||
|
if (wrapper != null) {
|
||||||
|
responseBody = wrapper.getContentInputStream();
|
||||||
|
}
|
||||||
|
return responseBody;
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-4
@@ -3,6 +3,7 @@ package com.jero.modules.docking.download.service.impl;
|
|||||||
import com.jero.common.api.vo.ResultCommon;
|
import com.jero.common.api.vo.ResultCommon;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.vo.LoginUser;
|
import com.jero.common.system.vo.LoginUser;
|
||||||
|
import com.jero.modules.docking.download.config.ContentCachingWrapperFilter;
|
||||||
import com.jero.modules.docking.download.service.DownloadDecryptFileService;
|
import com.jero.modules.docking.download.service.DownloadDecryptFileService;
|
||||||
import com.jero.modules.docking.utils.IntekeyUtils;
|
import com.jero.modules.docking.utils.IntekeyUtils;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
@@ -112,10 +113,7 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic
|
|||||||
if(Objects.equals(returnType,"void") && !Objects.equals(type,"1")){
|
if(Objects.equals(returnType,"void") && !Objects.equals(type,"1")){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class);
|
responseBody = ContentCachingWrapperFilter.getResponseBody(response);
|
||||||
if (wrapper != null) {
|
|
||||||
responseBody = wrapper.getContentInputStream();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
response.setStatus(404);
|
response.setStatus(404);
|
||||||
|
|||||||
Reference in New Issue
Block a user