gaodm 6 éve
szülő
commit
5e1e747856

+ 26 - 4
gateway-service/src/main/java/com/diagbot/filter/GlobalGatewayFilter.java

@@ -3,11 +3,16 @@ package com.diagbot.filter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.web.server.ServerWebExchange;
 import reactor.core.publisher.Mono;
 
+import java.net.URI;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+
 /**
  * @Description: 全局过滤器
  * @author: gaodm
@@ -16,12 +21,29 @@ import reactor.core.publisher.Mono;
 @Configuration
 @Slf4j
 public class GlobalGatewayFilter implements GlobalFilter {
+    private static final String GATE_WAY_PREFIX = "/api";
+
     @Override
-    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+    public Mono<Void> filter(ServerWebExchange serverWebExchange, GatewayFilterChain gatewayFilterChain) {
         log.info("check token and url permission....");
-        ServerHttpRequest.Builder builder = exchange.getRequest().mutate();
+        LinkedHashSet requiredAttribute = serverWebExchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
+        ServerHttpRequest request = serverWebExchange.getRequest();
+        String requestUri = request.getPath().pathWithinApplication().value();
+        if (requiredAttribute != null) {
+            Iterator<URI> iterator = requiredAttribute.iterator();
+            while (iterator.hasNext()){
+                URI next = iterator.next();
+                if(next.getPath().startsWith(GATE_WAY_PREFIX)){
+                    requestUri = next.getPath().substring(GATE_WAY_PREFIX.length());
+//                    requestUri = requestUri.substring(requestUri.indexOf('/', 2));
+                }
+            }
+        }
+        log.info(requestUri);
+        //
+        ServerHttpRequest.Builder builder = serverWebExchange.getRequest().mutate();
         builder.header("Authorization","Authorization Bearer token");
-        chain.filter(exchange.mutate().request(builder.build()).build());
-        return chain.filter(exchange.mutate().request(builder.build()).build());
+        gatewayFilterChain.filter(serverWebExchange.mutate().request(builder.build()).build());
+        return gatewayFilterChain.filter(serverWebExchange.mutate().request(builder.build()).build());
     }
 }