eureka-wiki bash
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.1</version>
</dependency>
复制代码
实现抽象类ClientFilter的handle方法app
public class IpCilentFilter extends ClientFilter {
@Override
public ClientResponse handle(ClientRequest clientRequest) throws ClientHandlerException {
//响应对象的处理
ClientResponse response = this.getNext().handle(clientRequest);
return response;
}
}
复制代码
注入clientFilteride
@Bean
public DiscoveryClientOptionalArgs discoveryClientOptionalArgs() {
DiscoveryClientOptionalArgs discoveryClientOptionalArgs = new DiscoveryClientOptionalArgs();
discoveryClientOptionalArgs.setAdditionalFilters(Collections.singletonList(new IpCilentFilter()));
return discoveryClientOptionalArgs;
}
复制代码
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registration = new FilterRegistrationBean(new ServerRequestAuthFilter());
registration.addUrlPatterns("/*");
return registration;
}
public class ServerRequestAuthFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
//业务实现,根据请求的IP或者参数判断是否能够执行注册或者访问
filterChain.doFilter(request, response);
}
}
复制代码
拦截具体客户端注册、续约、下线请求,请参考 /eureka/appsfetch
com.netflix.eureka.resources.ApplicationResource
复制代码
eureka:
client:
fetch-registry: true
复制代码