From 6987b5015e9324e73f2ea850bcef3bdd316ff031 Mon Sep 17 00:00:00 2001
From: jieyuu <645634619@qq.com>
Date: Wed, 4 Sep 2024 15:01:16 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3feign=E8=B0=83=E7=94=A8?=
 =?UTF-8?q?=E8=BF=9C=E7=A8=8Btoken=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/net/jieyuu/config/AppConfig.java     | 33 ++++++++++++++++++-
 .../net/jieyuu/config/InterceptorConfig.java  |  2 +-
 .../net/jieyuu/config/InterceptorConfig.java  |  2 ++
 .../net/jieyuu/config/InterceptorConfig.java  |  1 -
 4 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/xdclass-common/src/main/java/net/jieyuu/config/AppConfig.java b/xdclass-common/src/main/java/net/jieyuu/config/AppConfig.java
index 372012e..dbd64d2 100644
--- a/xdclass-common/src/main/java/net/jieyuu/config/AppConfig.java
+++ b/xdclass-common/src/main/java/net/jieyuu/config/AppConfig.java
@@ -1,6 +1,7 @@
 package net.jieyuu.config;
 
 
+import feign.RequestInterceptor;
 import lombok.Data;
 import org.redisson.Redisson;
 import org.redisson.api.RedissonClient;
@@ -12,10 +13,14 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.serializer.RedisSerializer;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
 
 @Configuration
 @Data
-public class AppConfig {
+public class  AppConfig {
 
     @Value("${spring.redis.host}")
     private String redisHost;
@@ -68,4 +73,30 @@ public class AppConfig {
 
         return redisTemplate;
     }
+
+    /**
+     * feign 调用token丢失解决
+     * 新增拦截器
+     *
+     * @return
+     */
+    @Bean
+    public RequestInterceptor requestInterceptor() {
+
+        return template -> {
+            // 获取当前请求的属性信息
+            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+
+            if (attributes != null) {
+                // 如果请求不为空,则记录请求头信息,并将请求头中的“token”值设置到新的请求模板的头部
+                HttpServletRequest request = attributes.getRequest();
+                if (null == request) {
+                    return;
+                }
+                String token = request.getHeader("token");
+                // 获取token并且设置到新的请求模板的头部
+                template.header("token", token);
+            }
+        };
+    }
 }
diff --git a/xdclass-order-service/src/main/java/net/jieyuu/config/InterceptorConfig.java b/xdclass-order-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
index 7d1ca5c..07825eb 100644
--- a/xdclass-order-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
+++ b/xdclass-order-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
@@ -22,4 +22,4 @@ public class InterceptorConfig implements WebMvcConfigurer {
 
         WebMvcConfigurer.super.addInterceptors(registry);
     }
-}
+}
\ No newline at end of file
diff --git a/xdclass-product-service/src/main/java/net/jieyuu/config/InterceptorConfig.java b/xdclass-product-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
index b822aa7..1751a58 100644
--- a/xdclass-product-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
+++ b/xdclass-product-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
@@ -1,8 +1,10 @@
 package net.jieyuu.config;
 
 
+
 import lombok.extern.slf4j.Slf4j;
 import net.jieyuu.interceptor.LoginInterceptor;
+
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
diff --git a/xdclass-user-service/src/main/java/net/jieyuu/config/InterceptorConfig.java b/xdclass-user-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
index ea1d39a..5ebc72d 100644
--- a/xdclass-user-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
+++ b/xdclass-user-service/src/main/java/net/jieyuu/config/InterceptorConfig.java
@@ -3,7 +3,6 @@ package net.jieyuu.config;
 
 import lombok.extern.slf4j.Slf4j;
 import net.jieyuu.interceptor.LoginInterceptor;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;