From 4ceb79afa35b2be369b8c84219524d687451974b Mon Sep 17 00:00:00 2001 From: MichelleChung <1242874891@qq.com> Date: 星期五, 29 十二月 2023 11:39:15 +0800 Subject: [PATCH] !467 新增 ThreadLocalHolder 整合 SaHolder,ThreadLocal * fix 修复 issue#I8RWB5 字段缺少问题 ; * add 新增 ThreadLocalHolder 替换 SaHolder ; --- ruoyi-common/ruoyi-common-security/src/main/java/org/dromara/common/security/config/SecurityConfig.java | 64 +++++++++++++++++++------------- 1 files changed, 38 insertions(+), 26 deletions(-) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/org/dromara/common/security/config/SecurityConfig.java b/ruoyi-common/ruoyi-common-security/src/main/java/org/dromara/common/security/config/SecurityConfig.java index 63d7eb1..ace0668 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/org/dromara/common/security/config/SecurityConfig.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/org/dromara/common/security/config/SecurityConfig.java @@ -4,10 +4,13 @@ import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.stp.StpUtil; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.core.context.ThreadLocalHolder; import org.dromara.common.security.config.properties.SecurityProperties; import org.dromara.common.security.handler.AllUrlHandler; import lombok.RequiredArgsConstructor; @@ -38,35 +41,44 @@ public void addInterceptors(InterceptorRegistry registry) { // 娉ㄥ唽璺敱鎷︽埅鍣紝鑷畾涔夐獙璇佽鍒� registry.addInterceptor(new SaInterceptor(handler -> { - AllUrlHandler allUrlHandler = SpringUtils.getBean(AllUrlHandler.class); - // 鐧诲綍楠岃瘉 -- 鎺掗櫎澶氫釜璺緞 - SaRouter - // 鑾峰彇鎵�鏈夌殑 - .match(allUrlHandler.getUrls()) - // 瀵规湭鎺掗櫎鐨勮矾寰勮繘琛屾鏌� - .check(() -> { - // 妫�鏌ユ槸鍚︾櫥褰� 鏄惁鏈塼oken - StpUtil.checkLogin(); + AllUrlHandler allUrlHandler = SpringUtils.getBean(AllUrlHandler.class); + // 鐧诲綍楠岃瘉 -- 鎺掗櫎澶氫釜璺緞 + SaRouter + // 鑾峰彇鎵�鏈夌殑 + .match(allUrlHandler.getUrls()) + // 瀵规湭鎺掗櫎鐨勮矾寰勮繘琛屾鏌� + .check(() -> { + // 妫�鏌ユ槸鍚︾櫥褰� 鏄惁鏈塼oken + StpUtil.checkLogin(); - // 妫�鏌� header 涓� param 閲岀殑 clientid 涓� token 閲岀殑鏄惁涓�鑷� - String headerCid = ServletUtils.getRequest().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)) { - // token 鏃犳晥 - throw NotLoginException.newInstance(StpUtil.getLoginType(), - "-100", "瀹㈡埛绔疘D涓嶵oken涓嶅尮閰�", - StpUtil.getTokenValue()); - } + // 妫�鏌� header 涓� param 閲岀殑 clientid 涓� token 閲岀殑鏄惁涓�鑷� + String headerCid = ServletUtils.getRequest().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)) { + // token 鏃犳晥 + throw NotLoginException.newInstance(StpUtil.getLoginType(), + "-100", "瀹㈡埛绔疘D涓嶵oken涓嶅尮閰�", + StpUtil.getTokenValue()); + } - // 鏈夋晥鐜囧奖鍝� 鐢ㄤ簬涓存椂娴嬭瘯 - // if (log.isDebugEnabled()) { - // log.info("鍓╀綑鏈夋晥鏃堕棿: {}", StpUtil.getTokenTimeout()); - // log.info("涓存椂鏈夋晥鏃堕棿: {}", StpUtil.getTokenActivityTimeout()); - // } + // 淇濆瓨鐢ㄦ埛淇℃伅 + ThreadLocalHolder.set(LoginHelper.LOGIN_USER_KEY, LoginHelper.getLoginUser()); - }); - })).addPathPatterns("/**") + // 鏈夋晥鐜囧奖鍝� 鐢ㄤ簬涓存椂娴嬭瘯 + // if (log.isDebugEnabled()) { + // log.info("鍓╀綑鏈夋晥鏃堕棿: {}", StpUtil.getTokenTimeout()); + // log.info("涓存椂鏈夋晥鏃堕棿: {}", StpUtil.getTokenActivityTimeout()); + // } + + }); + }) + { + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + ThreadLocalHolder.remove(LoginHelper.LOGIN_USER_KEY); + } + }).addPathPatterns("/**") // 鎺掗櫎涓嶉渶瑕佹嫤鎴殑璺緞 .excludePathPatterns(securityProperties.getExcludes()); } -- Gitblit v1.9.3