奥付:春・ブート・スターター・親2.1.11.RELEASE
1:フィルタクラスは、2つのフィルタを定義します
パブリック クラス MyFilter1 実装フィルター{ @オーバーライド 公共 のボイドのdoFilter(ServletRequestの要求、ServletResponseを応答、 れるFilterChain鎖)スローにIOException、ServletExceptionが{ // TODO XXX chain.doFilter(リクエスト、レスポンス)。 } @オーバーライド 公共 ボイドのinit(に、FilterConfigに、FilterConfig)がスローServletExceptionがを{ } @オーバーライド 公共の 無効(破棄){ } }
再定義第二フィルタMyFilter2、上記コード。注:任意のコメントを追加しないでください!
2:フィルタは、Beanとして登録しました
SpringBootは@Beanコメントを認識できます@Configuration注釈SpringBootスタートクラスを追加します。そして、クラスには、次のコードを追加します起動します。
@豆 MyFilter1 getApiAuthenticationFilter1(){ 返す 新しいMyFilter1を(); } @Bean( "myFilter1RegistrationBeanName" ) 公衆 FilterRegistrationBean <MyFilter1> registerFilter1(MyFilter1 myFilter1){ FilterRegistrationBean <MyFilter1> registrationBean = 新しいFilterRegistrationBean(); registrationBean.setFilter(myFilter1)。 registrationBean.addUrlPatterns( " /アカウント/ * " ); // URL拦截 registrationBean.setOrder( 1 ); registrationBean.setAsyncSupported(真の); 返すregistrationBeanを。 } @Bean //ここで特別にBeanとして登録され、それは容器がフィルタクラスに@Autowitedスプリングフィールドを注入与えることです MyFilter2 getInnerApiAuthFilter1(){ 返す 新しいMyFilter2を(); } @Bean(「myFilter2RegistrationBeanName」)// 無理という名前のBeanの名前与えるようにしてください、複数のフィルタと、そのノート 公共 FilterRegistrationBean <MyFilter2> registerFilter2(MyFilter2 myFilter2){ //パラメータ渡しモードではなく、新しいオブジェクトを、それが由来することができますオブジェクト与えるスプリング豆容器 FilterRegistrationBean <MyFilter2> = registrationBean 新しい新しいFilterRegistrationBeanを(); registrationBean.setFilter(myFilter2)。 registrationBean.addUrlPatterns( " / API / * " ); registrationBean.setOrder( 2 )。 registrationBean.setAsyncSupported(真の); 返すregistrationBeanを。 }
3:デバッグログを印刷するログレベルを変更します。
application.properties設定ファイルでは、ログレベルの設定を追加:logging.level.org.springframework.boot = デバッグ
4:ログを印刷検証URL傍受
2020年1月2日19:35:19.125 DEBUG 61918 [メイン] osbwsServletContextInitializerBeans:マッピングフィルタ:springSecurityFilterChainのURL = [ / * ]、
filterRegistrationBeanのURL = [アカウント/ / *]、filterRegistrationBeanのURL = [/ API / *]、characterEncodingFilterのURL = [/ *] 2020年1月2日19:35:19.125 DEBUG 61918 [メイン] osbwsServletContextInitializerBeans:マッピングサーブレット:のDispatcherServletのURL = [/]、
messageDispatcherServletのURL = [/サービス/ *]
上記のURLからわかるように、それが有効で、すでにだっログインターセプトを印刷します。
親和性の測定は、上記のコードを検証しました。
便利ではないコードの傍受・テスト・コントローラ、およびここに掲載に関しては、それぞれを確認してください。