4 3 zuul使用自定義過濾器進行鑑權

2021-09-29 18:59:22 字數 1376 閱讀 8313

一. 使用步驟

在閘道器服務下建立filter包

新建乙個類,繼承zuulfilter,複寫裡面的方法

string filtertype():使用哪個filter,一般登入使用前置filter,即pre_type

int filterorder():過濾器的權值,返回值越小,越先執行

boolean shouldfilter():判斷是否啟用過濾器,設定白名單(可以根據acl),如果返回true,啟用過濾器,進入下面的run方法

object run():過濾器的業務部分

在類頂部新增註解,@component,讓spring掃瞄

完整**示例:

* 登入過濾器

@component

public class loginfilter  extends zuulfilter else if ("/apigateway/order/api/v1/order/list".equalsignorecase(request.getrequesturi()))else if ("/apigateway/order/api/v1/order/find".equalsignorecase(request.getrequesturi())){

return true;

return false;

* 業務邏輯

//token物件

string token = request.getheader("token");

if(stringutils.isblank((token))){

token  = request.getparameter("token");

//登入校驗邏輯  根據公司情況自定義 jwt

自定義過濾器

這裡的過濾器的作用主要是在業務邏輯裡面判斷,傳遞的引數是否有誤,然後在實現類裡面去判斷具體的業務資料,執行流程和servlet的過濾器相類似,但是執行時機和作用大不相同,servlet的執行時機是在請求資源,在達到control之前去執行,通過執行鏈,我們的這個過濾器是在control裡,如下.先定...

自定義過濾器和全域性過濾器

過濾器中必須有返回值 一般使用花括號 插值,管道符前是要過濾的元素,管道符之後是過濾方法 p 過濾方法中有乙個引數,這個引數就是傳進來的要過濾的元素 過濾器 filters 使用過濾器時出現死迴圈 因為在將原陣列排序後賦值給原陣列,引用空間沒有變化,過濾一直在執行 解決辦法 使用擴充套件符將陣列賦值...

自定義時間過濾器

實現步驟 第一步,引導入 datetime 第二步,引入乙個建立時間,或者 直接寫死乙個時間 第三步,註冊乙個時間過濾器 第四步,實現過濾器的 第五步,在模板中呼叫 示例 一 字典中的 create time datetime 2017,10,20,16,19,0 二 過濾器 def handel ...