2016-09-26 16 views
5

Tôi đã tạo bộ lọc khởi động mùa xuân - triển khai GenericFilterBean với chú thích @Component.Làm cách nào để áp dụng bộ lọc khởi động mùa xuân dựa trên mẫu URL?

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

Bộ lọc được tự động xác định bởi khung khởi động mùa xuân và hoạt động tốt cho tất cả REST API. Tôi muốn bộ lọc này chỉ áp dụng trên một đường dẫn URL nhất định, chẳng hạn như/api/secure/* nhưng tôi không thể tìm đúng cách. Tôi đã thử @WebFilter nhưng nó không hoạt động. Tôi không sử dụng cấu hình XML hoặc bộ khởi tạo servlet - chỉ là các chú thích.

Cách chính xác để làm cho nó hoạt động là gì?

Trả lời

9

Bạn có thể thêm một bộ lọc như thế này:

@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

Nó vẫn còn xa lạ với tôi lý do tại sao nó không thể được giải quyết bằng một chú thích như @WebFilter, nhưng hoạt động này một cách hoàn hảo đối với tôi. Cảm ơn! – user1283002

+0

Có thể thực hiện điều đó thông qua chú thích không? – XZen

Các vấn đề liên quan