添加当前用户角色

This commit is contained in:
刘倡
2025-07-25 15:24:29 +08:00
parent e9b5c507be
commit 69ba803f18
3 changed files with 29 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import java.io.IOException;
public class BearerTokenFilter implements Filter { public class BearerTokenFilter implements Filter {
private static final String AUTHORIZATION_HEADER = "Authorization"; private static final String AUTHORIZATION_HEADER = "Authorization";
private static final String BEARER_PREFIX = "Bearer "; private static final String BEARER_PREFIX = "Bearer ";
private static final String ROLE_HEADER = "Currentrolecode";
@Override @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 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()); String token = authHeader.substring(BEARER_PREFIX.length());
BearerTokenHolder.setToken(token); BearerTokenHolder.setToken(token);
} }
//currentRole
String roleHeader = httpRequest.getHeader(ROLE_HEADER);
if (roleHeader != null) {;
CurrentRoleHolder.setRole(roleHeader);
}
} }
chain.doFilter(request, response); chain.doFilter(request, response);
} finally { } finally {
BearerTokenHolder.clear(); BearerTokenHolder.clear();
} }
} }
} }

View File

@ -0,0 +1,17 @@
package com.chinaunicom.mall.ebtp.cloud.security.starter.filter;
public class CurrentRoleHolder {
private static final ThreadLocal<String> 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();
}
}

View File

@ -1,5 +1,6 @@
package com.chinaunicom.mall.ebtp.common.base.service.impl; 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.entity.BaseCacheUser;
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -37,7 +38,10 @@ public class BaseCacheUserServiceImpl implements IBaseCacheUserService {
} }
Object o = redisTemplate.opsForValue().get(REDIS_USER_KEY + token); Object o = redisTemplate.opsForValue().get(REDIS_USER_KEY + token);
if (o instanceof BaseCacheUser) { if (o instanceof BaseCacheUser) {
return (BaseCacheUser) o; BaseCacheUser cacheUser = (BaseCacheUser) o;
// 添加当前用户角色
cacheUser.setCurrentRoleCode(CurrentRoleHolder.getRole());
return cacheUser;
} else { } else {
log.warn("redis中未找到用户信息token:{}", token); log.warn("redis中未找到用户信息token:{}", token);
return null; return null;