Переглянути джерело

update 优化 连接SSE token过期导致的 Servlet异常

疯狂的狮子Li 7 місяців тому
батько
коміт
df9cc881f1

+ 18 - 0
ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java

@@ -2,6 +2,7 @@ package org.dromara.common.web.handler;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpStatus;
+import jakarta.servlet.ServletException;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.validation.ConstraintViolation;
 import jakarta.validation.ConstraintViolationException;
@@ -10,6 +11,7 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.exception.base.BaseException;
 import org.dromara.common.core.utils.StreamUtils;
+import org.dromara.common.core.utils.StringUtils;
 import org.springframework.context.support.DefaultMessageSourceResolvable;
 import org.springframework.validation.BindException;
 import org.springframework.web.HttpRequestMethodNotSupportedException;
@@ -53,6 +55,22 @@ public class GlobalExceptionHandler {
         return ObjectUtil.isNotNull(code) ? R.fail(code, e.getMessage()) : R.fail(e.getMessage());
     }
 
+    /**
+     * servlet异常
+     */
+    @ExceptionHandler(ServletException.class)
+    public R<Void> handleServletException(ServletException e, HttpServletRequest request) {
+        if (StringUtils.contains(e.getMessage(), "NotLoginException")) {
+            String requestURI = request.getRequestURI();
+            log.error("请求地址'{}',认证失败'{}',无法访问系统资源", requestURI, e.getMessage());
+            return R.fail(HttpStatus.HTTP_UNAUTHORIZED, "认证失败,无法访问系统资源");
+        } else {
+            String requestURI = request.getRequestURI();
+            log.error("请求地址'{}',发生未知异常.", requestURI, e);
+            return R.fail(e.getMessage());
+        }
+    }
+
     /**
      * 业务异常
      */