ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/SseException.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,62 @@ package org.dromara.common.core.exception; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.io.Serial; /** * sse ç¹å¶å¼å¸¸ * * @author LionLi */ @Data @EqualsAndHashCode(callSuper = true) @NoArgsConstructor @AllArgsConstructor public final class SseException extends RuntimeException { @Serial private static final long serialVersionUID = 1L; /** * é误ç */ private Integer code; /** * é误æç¤º */ private String message; /** * é误æç»ï¼å é¨è°è¯é误 */ private String detailMessage; public SseException(String message) { this.message = message; } public SseException(String message, Integer code) { this.message = message; this.code = code; } @Override public String getMessage() { return message; } public SseException setMessage(String message) { this.message = message; return this; } public SseException setDetailMessage(String detailMessage) { this.detailMessage = detailMessage; return this; } } ruoyi-common/ruoyi-common-security/src/main/java/org/dromara/common/security/config/SecurityConfig.java
@@ -7,9 +7,11 @@ import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaResult; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.HttpStatus; import org.dromara.common.core.exception.SseException; import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; @@ -50,11 +52,20 @@ .match(allUrlHandler.getUrls()) // å¯¹æªæé¤çè·¯å¾è¿è¡æ£æ¥ .check(() -> { HttpServletRequest request = ServletUtils.getRequest(); // æ£æ¥æ¯å¦ç»å½ æ¯å¦ætoken StpUtil.checkLogin(); try { StpUtil.checkLogin(); } catch (NotLoginException e) { if (request.getRequestURI().contains("sse")) { throw new SseException(e.getMessage(), e.getCode()); } else { throw e; } } // æ£æ¥ header ä¸ param éç clientid ä¸ token éçæ¯å¦ä¸è´ String headerCid = ServletUtils.getRequest().getHeader(LoginHelper.CLIENT_KEY); String headerCid = request.getHeader(LoginHelper.CLIENT_KEY); String paramCid = ServletUtils.getParameter(LoginHelper.CLIENT_KEY); String clientId = StpUtil.getExtra(LoginHelper.CLIENT_KEY).toString(); if (!StringUtils.equalsAny(clientId, headerCid, paramCid)) { ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java
@@ -9,9 +9,9 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.SseException; 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; @@ -56,19 +56,24 @@ } /** * 认è¯å¤±è´¥ */ @ResponseStatus(org.springframework.http.HttpStatus.UNAUTHORIZED) @ExceptionHandler(SseException.class) public String handleNotLoginException(SseException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); log.error("请æ±å°å'{}',认è¯å¤±è´¥'{}',æ æ³è®¿é®ç³»ç»èµæº", requestURI, e.getMessage()); return 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()); } String requestURI = request.getRequestURI(); log.error("请æ±å°å'{}',åçæªç¥å¼å¸¸.", requestURI, e); return R.fail(e.getMessage()); } /**