如何修改java過濾器鏈

2021-09-02 15:07:30 字數 867 閱讀 9430

在開發中遇到乙個場景,當需要提供介面給其他系統,並需要鑑權時,我當時的處理方案是用過濾器攔截進行個性化鑑權,如果鑑權通過則還是需要經過安全測試、轉碼等filter,但是不走後面的鑑權過濾器,不通過則跳轉到錯誤頁面。

這裡就需要去掉過濾器鏈中的某乙個過濾器,下面介紹下我的方案:通過反射修改過濾器鏈:

/**

* * 通過反射修改過濾器鏈

* @param chain

*/private void skipfilter(filterchain chain) ;

field field = chain.getclass().getdeclaredfield("filters");

field.setaccessible(true);

filterconfig filters = (filterconfig) field.get(chain);

int k = 0;

for (int i = 0; i < filters.length; i++)

field3.setaccessible(false);

field2.setaccessible(false);}}

int index = 0;

for (int i = 0; i < filters.length; i++) else if (index != 0 && filters[i] != null)

}field.setaccessible(false);

field n=null;

try catch (exception e)

if(n!=null)

} catch (exception e)

}

責任鏈 過濾器 模式

假設從客戶端傳送資料給服務端,接著服務端再將資料傳輸回客戶端,同時需要將資料進行一些過濾,這時候就可以考慮過濾器模式。首先定義request和response,裡面就封裝乙個string public class request public class response 定義乙個filter介面 ...

Vue 過濾器案例(全域性過濾器和區域性過濾器)

doctype html en utf 8 viewport content width device width,initial scale 1.0 js vue 2.4.0 js script 過濾器 title head 兩個過濾器的名稱都為msgformat,但是控制不同作用,乙個是全域性的...

Java 之 Java 檔案過濾器

public class demo 編寫自定義的類,實現過濾器介面 漢字轉拼音.zip 需求 通過過濾器,遍歷列印資料夾中所有 txt 檔案 測試 filenamefilter 介面 1.0版本的 通過filenamefilter過濾器獲取指定目錄中小於200k的小檔案 public class e...