Tôi đang sử dụng Spring-Security 3.2.4 và Spring Boot 1.1.0 (và các phiên bản phụ thuộc có liên quan 4.X). Tôi đang viết một ứng dụng web sẽ chạy trong một tomcat được nhúng.Thêm bộ lọc tùy chỉnh được gọi sau bộ lọc bảo mật mùa xuân trong môi trường Servlet 3+
Tôi đang cố gắng thêm hai bộ lọc bổ sung (không liên quan đến bảo mật mùa xuân) mà một trong số chúng sẽ được gọi trước Spring-Security-FilterChainProxy và một bộ lọc khác sẽ được gọi sau Spring-Security-FilterChainProxy.
My Xuân-An ninh các file cấu hình:
@Configuration
@EnableWebMvcSecurity
public class SecurityCtxConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("pass").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.disable()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.usernameParameter("user").passwordParameter("password");
}
}
Và lớp Main (Application.class):
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
@Bean
RequestFilter beforeSpringSecurityFilter(){
return new RequestFilter();
}
@Bean
RequestFilter afterSpringSecurityFilter(){
return new RequestFilter();
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Và việc thực hiện lọc:
public class RequestFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
filterChain.doFilter(request, response);
}
}
Có cách kiểm soát thứ tự gọi khi tính đến FilterChainProxy (đó là tạo ra bởi con ong WebSecurityConfigurerAdapter? Được percise, thứ tự yêu cầu là:
- request-lọc-1
- mùa xuân-An ninh FilterChain
- request-lọc-2
Cảm ơn
Cảm ơn bạn rất nhiều @Dave Syer. Những gì tôi vẫn còn thiếu là tại sao không có hai chuỗi bộ lọc bây giờ, tôi có nghĩa là làm thế nào là khuôn khổ là một ware để thực tế là tôi đã thêm một FilterRegistration Bean (kết thúc tốt đẹp chuỗi bộ lọc) để các chuỗi bộ lọc nó tự wont được thêm vào như một bộ lọc, tôi sẽ hạnh phúc hơn tôi, bạn có thể xây dựng một chút. – Modi
Xem mã trong 'EmbeddedWebApplicationContext', trong đó nó phân tích' FilterRegistrationBeans'. Chúng tôi không tăng gấp đôi đăng ký các bộ lọc đã là một phần của một đăng ký. –
OK, cảm ơn rất nhiều. – Modi