1. 增加了WebSocket请求与异常调试控制台

This commit is contained in:
cuibaocheng 2021-09-16 14:23:01 +08:00
parent 35cf18019d
commit d1d5c0f54d

View File

@ -0,0 +1,76 @@
package cn.com.tenlion.systemcard.filter;
import cn.com.tenlion.systemcard.socket.CardLogSocket;
import ink.wgink.common.component.SecurityComponent;
import ink.wgink.pojo.app.AppTokenUser;
import ink.wgink.util.ReflectUtil;
import ink.wgink.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ControllerAdvice
public class CardAppException {
@Autowired
CardLogSocket cardLogSocket;
@Autowired
protected SecurityComponent securityComponent;
@ExceptionHandler(Exception.class)
public ModelAndView customException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
HttpServletRequest httpRequest = (HttpServletRequest) httpServletRequest;
String token = httpRequest.getHeader("token");
String url = httpRequest.getRequestURI();
if(!url.contains("/app/")) {
return null;
}
if(!StringUtils.isEmpty(token) && !StringUtils.isEmpty(cardLogSocket.selectUser)) {
AppTokenUser appTokenUser = null;
try {
appTokenUser = securityComponent.getAppTokenUser(token);
} catch (ReflectUtil.ReflectException e1) {
}
if(appTokenUser == null || !cardLogSocket.selectUser.equals(appTokenUser.getId())) {
return null;
}
}
// 此方式支持form-data传参方式参数获取其他传参方式请自行研究
Map<String, String[]> parameterMap = httpRequest.getParameterMap();
List<String> parameterList = new ArrayList<>();
parameterMap.forEach((key, value) -> {
parameterList.add(key + ":" + Arrays.toString(value));
});
String clientIp = httpRequest.getHeader("x-forwarded-for");
if (clientIp == null) {
clientIp = httpRequest.getRemoteAddr();
}
if(cardLogSocket.exceptionDescription) {
StringWriter trace = new StringWriter();
e.printStackTrace(new PrintWriter(trace));
String log = "Exception" + e.getMessage() + "\r\n" + trace.toString();
cardLogSocket.sendAll(log);
}else{
String log = "Exception" + e.getMessage();
cardLogSocket.sendAll(log);
}
return null;
}
}