1.maven引入包
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
2.配置文件
zuul: host: socket-timeout-millis: 180000 connect-timeout-millis: 180000 max-total-connections: 1000 #忽略所有服務 ignoredServices: '*' #添加主機頭 addHostHeader: true #是否默認支持重試 retryable: true #路由前綴 prefix: /webmicroservice #自定義路由 routes: leaguer: path: /leaguer/** serviceId: leaguer customSensitiveHeaders: true
3.自定義過濾器,都繼承zuulFilter,實現其方法
3.1
public class AuthFilter extends ZuulFilter { @Override public String filterType() { //類型為pre,前置 return FilterConstants.PRE_TYPE; } @Override public int filterOrder() { //順序為數字為6 return FilterConstants.PRE_DECORATION_FILTER_ORDER + 1; } @Override public boolean shouldFilter() { //無條件執行 return true; } @Override public Object run() { RequestContext context = RequestContext.getCurrentContext(); //TODO 實現自己需要執行的邏輯如,鑒定權限相關..... log.info("authFilter----->pre_type----->order=6"); return null; } }
public class LoginPostFilter extends ZuulFilter { @Override public String filterType() { //類型為post,后置 return FilterConstants.POST_TYPE; } @Override public int filterOrder() { //順序為數字為999 return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1; } @Override public boolean shouldFilter() { //無條件執行 return true; } @Override public Object run() { //TODO 實現自己需要執行的邏輯如,登錄后做些什么 log.info("loginFilter----->post_type----->order=999"); return null; } }
3.2實例化,注入spring容器
@Bean public AuthFilter getAuthFilter(){ return new AuthFilter(); } @Bean public LoginPostFilter getLoginPostFilter(){ return new LoginPostFilter(); }
4.啟動服務且發送請求
1:39:14.266 DEBUG 12920 --- [nio-8116-exec-2] o.s.b.w.f.OrderedRequestContextFilter : Bound request context to thread: org.apache.catalina.connector.RequestFacade@fa6901d 11:39:14.266 DEBUG 12920 --- [nio-8116-exec-2] o.s.web.servlet.DispatcherServlet : DispatcherServlet with name 'dispatcherServlet' processing POST request for [/webmicroservice/leaguer/leaUser/createImge] 11:39:14.266 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : route matched=ZuulRoute{id='leaguer', path='/leaguer/**', serviceId='leaguer', url='null', stripPrefix=true, retryable=null, sensitiveHeaders=[], customSensitiveHeaders=true, } 11:39:14.266 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.web.ZuulHandlerMapping : Matching patterns for request [/webmicroservice/leaguer/leaUser/createImge] are [/webmicroservice/leaguer/**] 11:39:14.266 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.web.ZuulHandlerMapping : URI Template variables for request [/webmicroservice/leaguer/leaUser/createImge] are {} 11:39:14.266 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.web.ZuulHandlerMapping : Mapping [/webmicroservice/leaguer/leaUser/createImge] to HandlerExecutionChain with handler [org.springframework.cloud.netflix.zuul.web.ZuulController@1f78d415] and 1 interceptor 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] c.n.zuul.http.HttpServletRequestWrapper : Path = null 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] c.n.zuul.http.HttpServletRequestWrapper : Transfer-Encoding = null 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] c.n.zuul.http.HttpServletRequestWrapper : Content-Encoding = null 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] c.n.zuul.http.HttpServletRequestWrapper : Content-Length header = 12 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] c.n.zuul.http.HttpServletRequestWrapper : Length of contentData byte array = 12 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : Finding route for path: /webmicroservice/leaguer/leaUser/createImge 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : servletPath=/ 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : zuulServletPath=/zuul 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : RequestUtils.isDispatcherServletRequest()=true 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : RequestUtils.isZuulServletRequest()=false 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : adjustedPath=/webmicroservice/leaguer/leaUser/createImge 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : Matching pattern:/webmicroservice/leaguer/** 11:39:14.267 DEBUG 12920 --- [nio-8116-exec-2] o.s.c.n.zuul.filters.SimpleRouteLocator : route matched=ZuulRoute{id='leaguer', path='/leaguer/**', serviceId='leaguer', url='null', stripPrefix=true, retryable=null, sensitiveHeaders=[], customSensitiveHeaders=true, } 11:39:14.268 INFO 12920 --- [nio-8116-exec-2] c.e.springbootzuul.filters.AuthFilter : authFilter----->pre_type----->order=6 11:39:14.268 DEBUG 12920 --- [nio-8116-exec-2] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'ribbonLoadBalancingHttpClient' 11:39:14.268 DEBUG 12920 --- [nio-8116-exec-2] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'ribbonLoadBalancer' 11:39:14.268 DEBUG 12920 --- [nio-8116-exec-2] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'ribbonClientConfig' 11:39:14.269 DEBUG 12920 --- [nio-8116-exec-2] c.n.loadbalancer.ZoneAwareLoadBalancer : Zone aware logic disabled or there is only one zone 11:39:14.269 DEBUG 12920 --- [nio-8116-exec-2] c.n.loadbalancer.LoadBalancerContext : leaguer using LB returned Server: 10.0.126.14:8085 for request /leaUser/createImge 11:39:14.270 DEBUG 12920 --- [nio-8116-exec-2] o.a.h.client.protocol.RequestAuthCache : Auth cache not set in the context 11:39:14.270 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.PoolingHttpClientConnectionManager : Connection request: [route: {}->http://10.0.126.14:8085][total kept alive: 1; route allocated: 1 of 50; total allocated: 1 of 200] 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "[read] I/O error: Read timed out" 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.PoolingHttpClientConnectionManager : Connection leased: [id: 0][route: {}->http://10.0.126.14:8085][total kept alive: 0; route allocated: 1 of 50; total allocated: 1 of 200] 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.DefaultManagedHttpClientConnection : http-outgoing-0: set socket timeout to 0 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.DefaultManagedHttpClientConnection : http-outgoing-0: set socket timeout to 1000 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] o.a.http.impl.execchain.MainClientExec : Executing request POST /leaUser/createImge HTTP/1.1 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] o.a.http.impl.execchain.MainClientExec : Target auth state: UNCHALLENGED 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] o.a.http.impl.execchain.MainClientExec : Proxy auth state: UNCHALLENGED 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> POST /leaUser/createImge HTTP/1.1 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> accept-language: zh-CN,zh;q=0.9 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> referer: http://localhost:9200/vip/login 11:39:14.271 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> content-type: application/x-www-form-urlencoded 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> origin: http://localhost:9200 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> accept: application/json, text/plain, */* 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> x-forwarded-host: localhost:9200 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> x-forwarded-proto: http 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> x-forwarded-prefix: /webmicroservice/leaguer 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> host: localhost:9200 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> x-forwarded-port: 9200 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> x-forwarded-for: 10.0.126.14 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> Accept-Encoding: gzip 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> Content-Length: 12 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 >> Connection: Keep-Alive 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "POST /leaUser/createImge HTTP/1.1[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "accept-language: zh-CN,zh;q=0.9[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "referer: http://localhost:9200/vip/login[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "content-type: application/x-www-form-urlencoded[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "origin: http://localhost:9200[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "accept: application/json, text/plain, */*[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "x-forwarded-host: localhost:9200[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "x-forwarded-proto: http[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "x-forwarded-prefix: /webmicroservice/leaguer[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "host: localhost:9200[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "x-forwarded-port: 9200[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "x-forwarded-for: 10.0.126.14[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "Accept-Encoding: gzip[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "Content-Length: 12[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "[\r][\n]" 11:39:14.272 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 >> "param=e30%3D" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "Connection: keep-alive[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "Transfer-Encoding: chunked[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "Content-Type: application/json;charset=UTF-8[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "X-Application-Context: leaguer[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "Date: Wed, 03 Jul 2019 03:39:14 GMT[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "045d[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "{"result":"eyJjb2RlIjowLCJkZXRhaWwiOiLojrflj5blm77lvaLpqozor4HnoIHmiJDlip8iLCJlbnRpdHkiOnsiaW1nU3RyIjoiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFIZ0FBQUFvQ0FJQUFBQzZpS2x5QUFBQnNVbEVRVlI0MnUzYnUwMEFNUXdBMEt0b3FHaFlnRG5ZZ3c3Uk1BSkx3QllVRkZRMENGcm9tQUxXb0FCT1FvcWloSFA4aStNTHRsem1ybmhuMlVta1c3NGpUR0lKZ29BT2FQTTRmYjZZQi9ybDVpNGw1c2w4UGZLUjY2KzNsQXhyZ1B2cDdLaVpqaW9hRDhkUUZrTEQzQmpvc2R3YzZGSEtXOXg0NVlIV0MwT1FvYXdMWFhCVG9ZZFlMMVJFbm5MWE9ibG1VOUExZEUzSmF4cTlZNFZMMXZBeVI5QkF6VXFVMWZ0R3pRZHZTMGpRSDUrWEtTVnJDTkFKOVBYOHlrTTIrUUJ1UldpcTh1YUJwWVlXZGd5RGlzNzU0RzFKOFliYmt3Y1gwQ3A5MlFhNnlHSk9idFZ5RFoxVHFpaFBEbDF6Ly9rR0dMclE1Q2xEZHgxektPZmNKT3VSMEd3T0Q5RHdHRVJDczVVYnQzZGFXMmJqU2NnNHJRUzBEblJ6SldZZVNwUXRvSE5sWFdqU3FWclNQZVRLMkI2OTkzSkdRdDhmdks4WjBMMGE5Szl2VGx6M0NxSHlQTkNNWFVmaEM4L0RnQ1lyYjlVdnhscjU5bTVLWmNCWGN1a1IwQVRma2RCYTBROGFEcEt2VFV3RjdkRFhBdHBNMmJOdlIramlLTmdQZWhlK3ZhQU5sUGZsYXdmOXozMk5obUg0ZW9lZXh0Y3Y5R1MrcHRDUHg0ZjJHUlZ0Rk42K2J2eGFFUlVkMEJHTStBRllKSk56YmJRODhRQUFBQUJKUlU1RXJrSmdnZz09IiwidXVpZCI6ImU2Yjc4OWJlLTU2ZjAtNDAxMS05N2NmLTBiZThiMzc2NjQ0NCJ9LCJnZW5lcmFsQnVzaW5lc3NFeGNlcHRpb24iOm51bGx9"}[\r][\n]" 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 << HTTP/1.1 200 OK 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 << Connection: keep-alive 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 << Transfer-Encoding: chunked 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 << Content-Type: application/json;charset=UTF-8 11:39:14.330 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 << X-Application-Context: leaguer 11:39:14.333 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.headers : http-outgoing-0 << Date: Wed, 03 Jul 2019 03:39:14 GMT 11:39:14.333 DEBUG 12920 --- [nio-8116-exec-2] o.a.http.impl.execchain.MainClientExec : Connection can be kept alive indefinitely 11:39:14.334 INFO 12920 --- [nio-8116-exec-2] c.e.s.filters.LoginPostFilter : loginFilter----->post_type----->order=999 11:39:14.334 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "0[\r][\n]" 11:39:14.334 DEBUG 12920 --- [nio-8116-exec-2] org.apache.http.wire : http-outgoing-0 << "[\r][\n]" 11:39:14.334 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.PoolingHttpClientConnectionManager : Connection [id: 0][route: {}->http://10.0.126.14:8085] can be kept alive indefinitely 11:39:14.334 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.DefaultManagedHttpClientConnection : http-outgoing-0: set socket timeout to 0 11:39:14.334 DEBUG 12920 --- [nio-8116-exec-2] h.i.c.PoolingHttpClientConnectionManager : Connection released: [id: 0][route: {}->http://10.0.126.14:8085][total kept alive: 1; route allocated: 1 of 50; total allocated: 1 of 200] 11:39:14.335 DEBUG 12920 --- [nio-8116-exec-2] o.s.web.servlet.DispatcherServlet : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling 11:39:14.335 DEBUG 12920 --- [nio-8116-exec-2] o.s.web.servlet.DispatcherServlet : Successfully completed request