czh 2 лет назад
Родитель
Сommit
c46094d5b4

+ 0 - 25
sckw-auth/src/main/java/com/sckw/auth/controller/ExceptionController.java

@@ -1,25 +0,0 @@
-package com.sckw.auth.controller;
-
-import com.sckw.core.web.response.HttpResult;
-import jakarta.servlet.http.HttpServletRequest;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author czh
- * @desc TODO
- * @date 2023/6/14
- */
-@RestController
-@RequestMapping("/error")
-public class ExceptionController {
-
-    /**
-     * 重新抛出异常
-     */
-    @PostMapping("/throwError")
-    public HttpResult exception(HttpServletRequest request) {
-        return HttpResult.error(Integer.parseInt(request.getAttribute("code").toString()), request.getAttribute("message").toString());
-    }
-}

+ 17 - 11
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/ExceptionFilterConfig.java

@@ -2,31 +2,37 @@ package com.sckw.core.filter;
 
 import com.sckw.core.exception.SystemException;
 import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
+import org.springframework.web.filter.OncePerRequestFilter;
+import org.springframework.web.servlet.HandlerExceptionResolver;
 
 import java.io.IOException;
 
 /**
  * @author czh
- * @desc TODO
+ * @desc 过滤器的异常抛出
  * @date 2023/6/14
  */
 @Component
 @Slf4j
-public class ExceptionFilterConfig implements Filter {
+public class ExceptionFilterConfig extends OncePerRequestFilter {
+
+    @Autowired
+    @Qualifier("handlerExceptionResolver")
+    private HandlerExceptionResolver resolver;
+
     @Override
-    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
         try {
-            filterChain.doFilter(servletRequest, servletResponse);
+            filterChain.doFilter(request, response);
         } catch (SystemException e) {
-            // 传递异常信息
-//            servletRequest.setAttribute("code", e.getCode());
-//            servletRequest.setAttribute("message", e.getMessage());
-//            // 指定处理该请求的处理器
-//            RequestDispatcher requestDispatcher = servletRequest.getRequestDispatcher("/error/throwError");
-//            requestDispatcher.forward(servletRequest, servletResponse);
-            log.error("请求异常:", e);
+            // 会交到 Springmvc的全局异常处理器那里
+            resolver.resolveException(request, response, null, e);
         }
     }
 }

+ 2 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/LoginFilter.java

@@ -64,6 +64,7 @@ public class LoginFilter implements Filter {
      */
     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException, SystemException{
+
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         String requestUri = request.getRequestURI();
         /*1、不用token的接口直接放行*/
@@ -91,7 +92,7 @@ public class LoginFilter implements Filter {
         String systemType = request.getHeader(RequestConstant.SYSTEM_TYPE);
         String userInfo = RedissonUtils.getString(Global.getFullUserLoginKey(Integer.parseInt(systemType), Long.parseLong(key), clientType));
         if (StringUtils.isBlank(userInfo)) {
-            throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ACCOUNT_NOT_EXISTS);
+            throw new SystemException(HttpStatus.UN_LOGIN_CODE, HttpStatus.UN_LOGIN_MESSAGE);
         }
 
         //将redis里的用户信息存入内存中,避免业务操作多次从redis获取值*/

+ 2 - 2
sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -2,6 +2,6 @@ com.sckw.core.aspect.DaoAspect
 com.sckw.core.exception.GlobalSystemExceptionHandler
 com.sckw.core.web.config.CustomConfig
 com.sckw.core.filter.LoginFilter
-#com.sckw.core.filter.ExceptionFilterConfig
 com.sckw.core.config.MybatisPlusConfig
-com.sckw.core.config.JacksonConfig
+com.sckw.core.config.JacksonConfig
+com.sckw.core.filter.ExceptionFilterConfig

+ 0 - 26
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/ExceptionController.java

@@ -1,26 +0,0 @@
-package com.sckw.system.controller;
-
-import com.sckw.core.web.response.HttpResult;
-import jakarta.servlet.http.HttpServletRequest;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author czh
- * @desc TODO
- * @date 2023/6/14
- */
-@RestController
-@RequestMapping("/error")
-public class ExceptionController {
-
-    /**
-     * 重新抛出异常
-     */
-    @PostMapping("/throwError")
-    public HttpResult exception(HttpServletRequest request) {
-        return HttpResult.error(Integer.parseInt(request.getAttribute("code").toString()), request.getAttribute("message").toString());
-    }
-}