天天看點

SpringCloud Zuul 請求過濾配置

SpringCloud Zuul 請求過濾配置

個人部落格網:www.lfuping.cn    (你想要這裡多有)

SpringCloud Zuul 請求過濾配置

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

發現歇逼了:

SpringCloud Zuul 請求過濾配置

3.帶個 accessToken http://localhost:3001/lifuping/providerServer/provider/list?accessToken=3232

SpringCloud Zuul 請求過濾配置

token的生成和驗證具體要根據需求設計來;

源碼連結: https://pan.baidu.com/s/1C7QXi56YjdloPN52b371VQ 
提取碼: 5ft2
           
SpringCloud Zuul 請求過濾配置

                                                     歡迎關注我的微信公衆号:平川大叔

繼續閱讀