2016-09-26 2 views
5

Я создал фильтр пружинной загрузки - реализует GenericFilterBean с аннотацией @Component.Как применить фильтр весны загрузки на основе шаблона URL?

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

Фильтр автоматически идентифицируется фреймворком загрузки и отлично работает для всего REST API. Я хочу, чтобы этот фильтр применялся только по определенному пути URL, например/api/secure/*, но я не могу найти правильный путь. Я пробовал @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

Смежные вопросы