Browse Source

添加feign token 和内部feign标识

wuhongshuang 3 years ago
parent
commit
776d363e5d

+ 6 - 0
src/main/java/com/szwl/constant/ConfigConsts.java

@@ -5,4 +5,10 @@ package com.szwl.constant;
  */
 public class ConfigConsts {
     public static final String TEST = "TEST";
+    /**
+     * token
+     * 请求头:Authorization
+     */
+    public static final String AUTHORIZATION = "Authorization";
+    public static final String INNER_FEIGN = "innerFeign";
 }

+ 21 - 0
src/main/java/com/szwl/feign/config/FeignConfig.java

@@ -0,0 +1,21 @@
+package com.szwl.feign.config;
+
+import com.szwl.feign.interceptor.FeignClientRequestHeaderInterceptor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author PT-ZHOUYUHENG
+ * @date 2021-11-04 10:38
+ */
+@Configuration
+@Slf4j
+public class FeignConfig {
+    @Bean
+    public FeignClientRequestHeaderInterceptor feignClientRequestHeaderInterceptor() {
+        log.info("--feign client request header interceptor reg");
+        return new FeignClientRequestHeaderInterceptor();
+    }
+
+}

+ 45 - 0
src/main/java/com/szwl/feign/interceptor/FeignClientRequestHeaderInterceptor.java

@@ -0,0 +1,45 @@
+package com.szwl.feign.interceptor;
+
+import com.szwl.constant.ConfigConsts;
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Enumeration;
+
+
+/**
+ * feign请求带上前端的token
+ * @author wuhs
+ */
+@Slf4j
+public class FeignClientRequestHeaderInterceptor implements RequestInterceptor {
+    @Value("${spring.application.name:}")
+    private String applicationName;
+
+    @Override
+    public void apply(RequestTemplate requestTemplate) {
+        //获取请求对象
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        if (null != attributes) {
+            HttpServletRequest request = attributes.getRequest();
+            //找出当前请求头
+            Enumeration<String> headers = request.getHeaderNames();
+            //把所有请求头加入
+            while (headers.hasMoreElements()) {
+                String name = headers.nextElement();
+                if ("content-length".equalsIgnoreCase(name)) {
+                    continue;
+                }
+                String value = request.getHeader(name);
+                requestTemplate.header(name, value);
+            }
+        }
+        //添加内部跳过鉴权请求头
+        requestTemplate.header(ConfigConsts.INNER_FEIGN, "1");
+    }
+}