浏览代码

添加feign token 和内部feign标识

wuhongshuang 3 年之前
父节点
当前提交
1aaa9d7fa0

+ 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";
 }

+ 4 - 1
src/main/java/com/szwl/controller/DemoController.java

@@ -33,7 +33,6 @@ public class DemoController {
     @Autowired
     TAdminService tAdminService;
 
-
     @ApiOperation(value = "测试更新")
     @PostMapping("/update")
     public ResponseModel<?> testUpdate(TAdmin entity) {
@@ -41,6 +40,10 @@ public class DemoController {
     }
 
 
+    @GetMapping("/testPay")
+    public ResponseModel<?> testPay(String id) {
+        return R.ok(tAdminService.getById(id));
+    }
     @ApiOperation(value = "分页查询")
     @GetMapping("/testPage")
     public ResponseModel<IPage<?>> testPage(TAdminParam param) {

+ 2 - 3
src/main/java/com/szwl/controller/TOrderController.java

@@ -67,9 +67,8 @@ public class TOrderController {
     EsTOrderService esTOrderService;
     @ApiOperation(value = "测试feign")
     @GetMapping("/testFeign")
-    public ResponseModel<List> testFeign(String name) {
-        IPage<?> iPage = R.getDataIfSuccess(szwlFeign.testPay("1"));
-        return R.ok(iPage.getRecords());
+    public ResponseModel<?> testFeign(String id) {
+        return szwlFeign.testGetAdmin(id);
     }
     /**
      * 合并付款接口,根据终端跳转微信或支付宝

+ 3 - 3
src/main/java/com/szwl/feign/bean/SzwlFeign.java

@@ -12,11 +12,11 @@ import org.springframework.web.bind.annotation.RequestParam;
 import java.util.Date;
 
 
-@FeignClient(name = "pay-server")
+@FeignClient(name = "szwl-server")
 public interface SzwlFeign {
 
-    @GetMapping("/test/testPay")
-    ResponseModel<IPage<?>> testPay(String id);
+    @GetMapping("/test/testGetAdmin")
+    ResponseModel<?> testGetAdmin(@RequestParam String id);
 
     @GetMapping("/tEquipment/findEquipmentByClientId")
     ResponseModel<TEquipment> findEquipmentByClientId(String clientId);

+ 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");
+    }
+}