Commit dd1d1ff0 by Nepxion

Fix:Zuul Filter添加Header在MyDiscoveryEnabledStrategy里无法获取

parent 7d1c86ad
...@@ -11,6 +11,7 @@ package com.nepxion.discovery.plugin.strategy.zuul.adapter; ...@@ -11,6 +11,7 @@ package com.nepxion.discovery.plugin.strategy.zuul.adapter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -37,7 +38,12 @@ public class DefaultDiscoveryEnabledAdapter extends AbstractDiscoveryEnabledAdap ...@@ -37,7 +38,12 @@ public class DefaultDiscoveryEnabledAdapter extends AbstractDiscoveryEnabledAdap
return null; return null;
} }
return request.getHeader(DiscoveryConstant.N_D_VERSION); String version = request.getHeader(DiscoveryConstant.N_D_VERSION);
if (StringUtils.isEmpty(version)) {
version = zuulStrategyContextHolder.getZuulRequestHeaders().get(DiscoveryConstant.N_D_VERSION);
}
return version;
} }
@Override @Override
...@@ -51,7 +57,12 @@ public class DefaultDiscoveryEnabledAdapter extends AbstractDiscoveryEnabledAdap ...@@ -51,7 +57,12 @@ public class DefaultDiscoveryEnabledAdapter extends AbstractDiscoveryEnabledAdap
return null; return null;
} }
return request.getHeader(DiscoveryConstant.N_D_REGION); String region = request.getHeader(DiscoveryConstant.N_D_REGION);
if (StringUtils.isEmpty(region)) {
region = zuulStrategyContextHolder.getZuulRequestHeaders().get(DiscoveryConstant.N_D_REGION);
}
return region;
} }
@Override @Override
...@@ -65,6 +76,11 @@ public class DefaultDiscoveryEnabledAdapter extends AbstractDiscoveryEnabledAdap ...@@ -65,6 +76,11 @@ public class DefaultDiscoveryEnabledAdapter extends AbstractDiscoveryEnabledAdap
return null; return null;
} }
return request.getHeader(DiscoveryConstant.N_D_ADDRESS); String address = request.getHeader(DiscoveryConstant.N_D_ADDRESS);
if (StringUtils.isEmpty(address)) {
address = zuulStrategyContextHolder.getZuulRequestHeaders().get(DiscoveryConstant.N_D_ADDRESS);
}
return address;
} }
} }
\ No newline at end of file
...@@ -10,6 +10,8 @@ package com.nepxion.discovery.plugin.strategy.zuul.context; ...@@ -10,6 +10,8 @@ package com.nepxion.discovery.plugin.strategy.zuul.context;
* @version 1.0 * @version 1.0
*/ */
import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.context.RequestContext;
...@@ -23,4 +25,8 @@ public class ZuulStrategyContextHolder { ...@@ -23,4 +25,8 @@ public class ZuulStrategyContextHolder {
return request; return request;
} }
public Map<String, String> getZuulRequestHeaders() {
return RequestContext.getCurrentContext().getZuulRequestHeaders();
}
} }
\ No newline at end of file
...@@ -20,7 +20,7 @@ import org.springframework.web.server.ServerWebExchange; ...@@ -20,7 +20,7 @@ import org.springframework.web.server.ServerWebExchange;
public class MyGatewayFilter implements GlobalFilter, Ordered { public class MyGatewayFilter implements GlobalFilter, Ordered {
@Override @Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest newRequest = exchange.getRequest().mutate().header("version", "{\"discovery-springcloud-example-a\":\"1.0\", \"discovery-springcloud-example-b\":\"1.0\", \"discovery-springcloud-example-c\":\"1.0;1.2\"}").build(); ServerHttpRequest newRequest = exchange.getRequest().mutate().header("n-d-version", "{\"discovery-springcloud-example-a\":\"1.0\", \"discovery-springcloud-example-b\":\"1.0\", \"discovery-springcloud-example-c\":\"1.0;1.2\"}").build();
ServerWebExchange newExchange = exchange.mutate().request(newRequest).build(); ServerWebExchange newExchange = exchange.mutate().request(newRequest).build();
return chain.filter(newExchange); return chain.filter(newExchange);
...@@ -28,6 +28,7 @@ public class MyGatewayFilter implements GlobalFilter, Ordered { ...@@ -28,6 +28,7 @@ public class MyGatewayFilter implements GlobalFilter, Ordered {
@Override @Override
public int getOrder() { public int getOrder() {
return -200; // Order必须小于-400
return -500;
} }
} }
\ No newline at end of file
...@@ -31,7 +31,7 @@ public class MyZuulFilter extends ZuulFilter { ...@@ -31,7 +31,7 @@ public class MyZuulFilter extends ZuulFilter {
@Override @Override
public Object run() { public Object run() {
RequestContext context = RequestContext.getCurrentContext(); RequestContext context = RequestContext.getCurrentContext();
context.addZuulRequestHeader("version", "{\"discovery-springcloud-example-a\":\"1.0\", \"discovery-springcloud-example-b\":\"1.0\", \"discovery-springcloud-example-c\":\"1.0;1.2\"}"); context.addZuulRequestHeader("n-d-version", "{\"discovery-springcloud-example-a\":\"1.0\", \"discovery-springcloud-example-b\":\"1.0\", \"discovery-springcloud-example-c\":\"1.0;1.2\"}");
return null; return null;
} }
......
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