2016-09-26 3 views
5

私はSpringブートフィルタを作成しました。@ Componentアノテーションを持つGenericFilterBeanを実装しています。URLパターンに基づいてスプリングブートフィルタを適用するにはどうすればよいですか?

@Component 
public class MyAuthenticationFilter extends GenericFilterBean { 
... 
@Override 
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { 
... 
} 
} 

フィルタは自動的にスプリングブートフレームワークによって識別され、すべてのREST APIで正常に動作します。このフィルタを/ api/secure/*などの特定のURLパスにのみ適用したいが、正しい方法が見つからない。 @WebFilterを試しましたが、動作しませんでした。 私はXML設定またはサーブレットイニシャライザを使用していません - 注釈だけです。

正常に動作させるにはどうすればよいですか?

答えて

9

あなたは、このようにフィルタを追加することができます。

@Bean 
public FilterRegistrationBean someFilterRegistration() { 

    FilterRegistrationBean registration = new FilterRegistrationBean(); 
    registration.setFilter(someFilter()); 
    registration.addUrlPatterns("/url/*"); 
    registration.addInitParameter("paramName", "paramValue"); 
    registration.setName("someFilter"); 
    registration.setOrder(1); 
    return registration; 
} 

@Bean(name = "someFilter") 
public Filter someFilter() { 
    return new SomeFilter(); 
} 
+3

を、それが@WebFilterのような注釈では解決できない理由それはまだ私には奇妙であるが、これは私のために完璧に動作します。ありがとう! – user1283002

+0

注釈でも可能ですか? – XZen

関連する問題