国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Spring Security和自定義filter的沖突導致多執行的解決方案

瀏覽:5日期:2023-07-07 10:06:31
問題描述:

使用Spring Security時,在WebSecurityConfig中需要通過@bean注解注入Security的filter對象,但是不知是不是因為spring boot框架的原因還是什么未知原因,導致在這里注入,就會多注入一次這個對象,導致filter鏈走完之后,又會回到這個filter中再執行一次。

@Bean public JwtAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {return new JwtAuthenticationTokenFilter(); }

這是WebSecurityConfig.java中原本需要注入的對象。

httpSecurity.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

添加到Security中,這時,可能就會因為這一次的注入,導致filter鏈在本應該執行完之后,再一次執行添加到Security的filter……

解決辦法:

將這兩個代碼段注釋掉即可解決,當然,只是解決filter鏈執行完后再執行Security的filter的問題,本質上來說并不能真正的解決問題。如果有更好的理解或者更好的解決方法,歡迎討論。

2019-5-9 16:49:00:之前這么做發現,這樣Spring Security就相當于沒有作用了,但是filter還是會起作用,而如果啟用Spring Security,還是會進入filter……如果授權自定義的話Spring Security感覺沒有用處了,當然這是我碰到的問題,框架也是別人搭起來的,但是用法是不對的,導致寫的filter變成了自定義的,感覺跟Spring Security框架格格不入,如果有大佬知道的話歡迎指導!謝謝。

如果要使用Spring Security,那么就需要將JwtAuthenticationTokenFilter上的@Component注解刪除或者注釋掉,因為二次注入的類都是這個,但是產生的類對象應該是不一樣的,所以會導致二次進入filter。

所以搞得我現在很懷疑Spring Security是不是有必要……

Spring Security3自定義安全過濾器位置及注意事項當auto-config='true'時,springSecurity自動創建過濾器鏈

1.自定義過濾器位置需要在已有過濾器之前或之后,否則會報錯;

2.由于FilterSecurityInterceptor安全observeOncePerRequest(每個請求一次)默認為true.

默認情況下FilterSecurityInterceptor只會執行一個,所以如果既要執行默認安全過濾器又要執行自定義過濾器,自定義過濾器放到默認安全過濾器之前,同時observeOncePerRequest設置為false.

如:

(1)

<custom-filter after='FILTER_SECURITY_INTERCEPTOR' ref='menuFilter' />

(2)

<beans:property name='observeOncePerRequest' value='false' />

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 晴隆县| 射阳县| 旬阳县| 扎兰屯市| 汶川县| 临洮县| 务川| 百色市| 咸宁市| 夏邑县| 万年县| 桦甸市| 泾阳县| 阳江市| 天气| 遂宁市| 天长市| 石林| 连江县| 大足县| 秦安县| 宣城市| 双牌县| 南岸区| 个旧市| 南岸区| 井研县| 洞口县| 黄冈市| 湛江市| 洛宁县| 徐水县| 中方县| 淮安市| 简阳市| 平安县| 宜阳县| 万年县| 钦州市| 沙河市| 辽阳市|