個人部落格網:www.lfuping.cn (你想要這裡多有)
Zuul 請求過濾配置
比如登入某個系統需要身份驗證,使用者名密碼啥的;
請求服務,也可以來設定身份驗證,也就是過濾非法請求;Zuul通過ZuulFilter過濾器實作;
一般具體實作的話 每次經過Zuul服務網關 都對帶來的token進行有效性驗證;
定義一個 AccessFilter類:
package com.li.springcloud.zuul.config;
import javax.servlet.http.HttpServletRequest;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
/**
* Zuul 請求過濾器
* @author Administrator
*
*/
public class AccessFilter extends ZuulFilter {
/**
* 判斷該過濾器是否要被執行
*/
@Override
public boolean shouldFilter() {
// TODO Auto-generated method stub
return true;
}
/**
* 過濾器的具體執行邏輯
*/
@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String parameter = request.getParameter("accessToken");
System.out.println(request.getRequestURL().toString() + " 請求通路");
if (parameter == null) {
System.out.println("accessToken為空!");
ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(401);
ctx.setResponseBody("{\"result\":\"accessToken is empty!\"}");
return null;
}
// token判斷邏輯
System.out.println(request.getRequestURL().toString() + " 請求成功");
return null;
}
/**
* 過濾器的類型 這裡用pre,代表會再請求被路由之前執行
*/
@Override
public String filterType() {
// TODO Auto-generated method stub
return "pre";
}
/**
* 過濾器的執行順序
*/
@Override
public int filterOrder() {
// TODO Auto-generated method stub
return 0;
}
}
開啟下 Filter配置:
package com.li.springcloud.zuul.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Zuul配置
*
* @author Administrator
*
*/
@Configuration
public class ZuulConfig {
@Bean
public AccessFilter accessFilter() {
return new AccessFilter();
}
}
二、測試:
1.啟動eureka單機或者叢集,然後再啟動下一個服務生産者springcloud-provider-1單機或者叢集,以及 zuul網關服務;
2.請求通路http://localhost:3001/lifuping/providerServer/provider/list
發現歇逼了:
3.帶個 accessToken http://localhost:3001/lifuping/providerServer/provider/list?accessToken=3232
token的生成和驗證具體要根據需求設計來;
源碼連結: https://pan.baidu.com/s/1C7QXi56YjdloPN52b371VQ
提取碼: 5ft2
歡迎關注我的微信公衆号:平川大叔