Commit 904dd7fd by zhangxingmin

ThreadLocal

parent 757fc11b
......@@ -301,7 +301,7 @@ public class JwtTokenProvider {
String configSecret = "v92cuMDOZEd0WIbmX9LHQpZ0HgMIfRPXvDXGmP+5ThbADd2YdD0mCbGujIvLSBZR2ZWby8PKYRT2ReBQ7wIDPQ==";
// 要解析的 token
String token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ1c2VyXzEwMDEiLCJyb2xlcyI6W10sImlhdCI6MTc2ODU2MTY5NywiZXhwIjoxNzY4NjQ4MDk3fQ.LMbTJE-lnWZn9YSNpgMH9tz298BAHJTtVBuahtZosklRnrnfUTaz3yurJpneMseDOybXjmxpPXeCErdmgdO8yw";
String token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ1c2VyXzEwMDEiLCJyb2xlcyI6W10sImlhdCI6MTc2ODU2MjQwMSwiZXhwIjozMzQ2NDEwMDAxfQ.izMcWJfmhgi3rpyHn1_fNTbSYjWQMAjRN21hNWTBsbp84tsJSWaYew2Zr_dyyKf3woKoH_QsQ74FZl4gAs7Fug";
// 分析 token
System.out.println("使用配置文件中的密钥分析 Token:");
......
......@@ -13,8 +13,20 @@ import javax.servlet.http.HttpServletRequest;
public class FeignTokenInterceptor implements RequestInterceptor {
private static final Logger logger = LoggerFactory.getLogger(FeignTokenInterceptor.class);
// 使用ThreadLocal存储Token,用于异步场景
private static final ThreadLocal<String> THREAD_LOCAL_TOKEN = new ThreadLocal<>();
@Override
public void apply(RequestTemplate template) {
// 首先尝试从ThreadLocal获取(异步场景)
String threadLocalToken = THREAD_LOCAL_TOKEN.get();
if (threadLocalToken != null && !threadLocalToken.trim().isEmpty()) {
template.header("Authorization", threadLocalToken);
logger.debug("从ThreadLocal添加Authorization头到Feign请求");
return;
}
// ThreadLocal没有,再从请求上下文获取(同步场景)
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes == null) {
......@@ -32,4 +44,14 @@ public class FeignTokenInterceptor implements RequestInterceptor {
logger.debug("当前请求中没有Authorization头,跳过Token传递");
}
}
// 设置ThreadLocal Token的方法
public static void setThreadLocalToken(String token) {
THREAD_LOCAL_TOKEN.set(token);
}
// 清理ThreadLocal Token的方法
public static void clearThreadLocalToken() {
THREAD_LOCAL_TOKEN.remove();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment