【发布时间】:2014-08-13 09:43:51
【问题描述】:
我正在使用 Spring-Security 3.2.4 和 Spring Boot 1.1.0(以及它的相关依赖项版本 4.X)。 我正在编写一个将在嵌入式 tomcat 中运行的 Web 应用程序。
我正在尝试添加两个额外的过滤器(与 Spring 安全性无关),其中一个将在 Spring-Security-FilterChainProxy 之前调用,另一个将在 Spring-Security-FilterChainProxy 之后调用。
我的 Spring-Security 配置文件:
@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");
}
}
还有主类(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);
}
}
以及过滤器的实现:
public class RequestFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
filterChain.doFilter(request, response);
}
}
考虑到 FilterChainProxy (即由 WebSecurityConfigurerAdapter 创建的蜜蜂)时,有没有办法控制调用顺序? 准确地说,所需的顺序是:
- request-filter-1
- Spring-Security 过滤链
- request-filter-2
谢谢
【问题讨论】:
标签: spring-mvc spring-security spring-boot