springBoot整合shiro、jwt遇到的問題(shiro中fileter和自定義fileter的執行順序)

springboot中有一個專門註冊fileter到容器的類FilterRegistrationBean,shiro中也有一個註冊fileter的類ShiroFilterFactoryBean

這兩個類的作用都是註冊bean,兩個註冊的fileter爲平級關係,如果想讓他們成爲上下級關係(知道他們哪個先執行嗎,一般情況下都是自己定義的fileter先執行,知道爲什麼嗎,因爲自定義的一版都會設置order屬性,shiro默認的fileter的order屬性默認是最大的,所以執行的晚),可以把自己寫的fileter的加入到shiro中,怎麼加呢,小夥伴門先取研究下怎麼把把自定義的fileter加入到shiro中?

springBoot中有個ShiroConfig,下面看代碼:

 


 

這段代碼必須加,否則的話自定義的過濾器還是會攔截到所有的請求,這個沒看源碼,網上的這篇文章頁沒講明白http://www.hillfly.com/2017/179.html

@Bean
public FilterRegistrationBean jwtAuthenticationTokenFilter(AuthFilter authFilter) {
    FilterRegistrationBean registrationBean = new FilterRegistrationBean(authFilter);
    registrationBean.setEnabled(false);
    return registrationBean;
}

我採取的方案還是把自定義的fileter和shiro中的fileter整爲平行關係,因爲這種更好理解,不用關心shiro內部是怎麼處理fileter的,看代碼:

好了,知道爲什麼把order設置爲2嗎,因爲springBoot中有個XssFilter過濾器,應該讓這個過濾器優先執行。

開發階段把XssFilter這個過濾器的enable的屬性設置爲false,減少內存,提高計算機的工作效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章