From 69ba803f18077c58920112f67785fdde548cac0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=80=A1?= Date: Fri, 25 Jul 2025 15:24:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BD=93=E5=89=8D=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/filter/BearerTokenFilter.java | 8 +++++++- .../starter/filter/CurrentRoleHolder.java | 17 +++++++++++++++++ .../service/impl/BaseCacheUserServiceImpl.java | 6 +++++- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/CurrentRoleHolder.java diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/BearerTokenFilter.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/BearerTokenFilter.java index f6f74e0..f9eeea4 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/BearerTokenFilter.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/BearerTokenFilter.java @@ -11,6 +11,7 @@ import java.io.IOException; public class BearerTokenFilter implements Filter { private static final String AUTHORIZATION_HEADER = "Authorization"; private static final String BEARER_PREFIX = "Bearer "; + private static final String ROLE_HEADER = "Currentrolecode"; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { @@ -22,10 +23,15 @@ public class BearerTokenFilter implements Filter { String token = authHeader.substring(BEARER_PREFIX.length()); BearerTokenHolder.setToken(token); } + //currentRole + String roleHeader = httpRequest.getHeader(ROLE_HEADER); + if (roleHeader != null) {; + CurrentRoleHolder.setRole(roleHeader); + } } chain.doFilter(request, response); } finally { BearerTokenHolder.clear(); } } -} \ No newline at end of file +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/CurrentRoleHolder.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/CurrentRoleHolder.java new file mode 100644 index 0000000..538c12f --- /dev/null +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/filter/CurrentRoleHolder.java @@ -0,0 +1,17 @@ +package com.chinaunicom.mall.ebtp.cloud.security.starter.filter; + +public class CurrentRoleHolder { + private static final ThreadLocal ROLE_HOLDER = new ThreadLocal<>(); + + public static void setRole(String role) { + ROLE_HOLDER.set(role); + } + + public static String getRole() { + return ROLE_HOLDER.get(); + } + + public static void clear() { + ROLE_HOLDER.remove(); + } +} diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java index 4c50b6a..1026006 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/base/service/impl/BaseCacheUserServiceImpl.java @@ -1,5 +1,6 @@ package com.chinaunicom.mall.ebtp.common.base.service.impl; +import com.chinaunicom.mall.ebtp.cloud.security.starter.filter.CurrentRoleHolder; import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; import lombok.extern.slf4j.Slf4j; @@ -37,7 +38,10 @@ public class BaseCacheUserServiceImpl implements IBaseCacheUserService { } Object o = redisTemplate.opsForValue().get(REDIS_USER_KEY + token); if (o instanceof BaseCacheUser) { - return (BaseCacheUser) o; + BaseCacheUser cacheUser = (BaseCacheUser) o; + // 添加当前用户角色 + cacheUser.setCurrentRoleCode(CurrentRoleHolder.getRole()); + return cacheUser; } else { log.warn("redis中未找到用户信息,token:{}", token); return null;