Commit a98223a8 by jianan

操作日志4

parent 8d33467d
package com.yd.csf.api.filter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.ContentCachingRequestWrapper;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 缓存请求体的Filter,使切面中能读取原始HTTP请求体
*/
@Component
public class RequestCachingFilter extends OncePerRequestFilter {
private static final Log log = LogFactory.getLog(RequestCachingFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
log.info("RequestCachingFilter doFilterInternal");
try {
// 如果不是 multipart/form-data,使用 ContentCachingRequestWrapper 包装
String contentType = request.getContentType();
boolean isMultipart = contentType != null && contentType.startsWith("multipart/form-data");
if (!isMultipart) {
ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request);
filterChain.doFilter(wrappedRequest, response);
} else {
filterChain.doFilter(request, response);
}
} catch (Exception e) {
logger.error("RequestCachingFilter异常", e);
throw e;
}
}
}
...@@ -11,8 +11,10 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -11,8 +11,10 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
...@@ -97,12 +99,22 @@ public class AuditService { ...@@ -97,12 +99,22 @@ public class AuditService {
HttpServletRequest request = attrs.getRequest(); HttpServletRequest request = attrs.getRequest();
ctx.setOperUrl(request.getRequestURI()); ctx.setOperUrl(request.getRequestURI());
ctx.setOperIp(request.getRemoteAddr()); ctx.setOperIp(request.getRemoteAddr());
ctx.setOperParam(getRequestBody(request));
} }
} catch (Exception e) { } catch (Exception e) {
log.debug("获取请求信息失败: {}", e.getMessage()); log.debug("获取请求信息失败: {}", e.getMessage());
} }
} }
private String getRequestBody(HttpServletRequest request) {
try {
return request.getReader().lines().collect(Collectors.joining("\n"));
} catch (IOException e) {
log.debug("获取请求体失败: {}", e.getMessage());
return null;
}
}
private void fillOperatorInfo(AuditContext ctx) { private void fillOperatorInfo(AuditContext ctx) {
try { try {
AuthUserDto user = SecurityUtil.getCurrentLoginUser(); AuthUserDto user = SecurityUtil.getCurrentLoginUser();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment