Spring Security配置@Order不唯一异常

9 浏览
0 Comments

Spring Security配置@Order不唯一异常

我尝试在我的Spring Security配置中注册多个过滤器,但是我总是遇到相同的异常:

04-Nov-2015 14:35:23.792 警告 [RMI TCP Connection(3)-127.0.0.1]

org.springframework.web.context.support.AnnotationConfigWebApplicationContext.refresh

在初始化上下文过程中遇到异常 - 取消刷新尝试

org.springframework.beans.factory.BeanCreationException: 创建bean时出错

'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration':

自动注入依赖项失败; 嵌套异常是

java.lang.IllegalStateException: WebSecurityConfigurers上的@Order必须唯一。顺序值100已经被使用,所以不能在

com.payment21.webapp.MultiHttpSecurityConfig$ApiWebSecurityConfigurationAdapter$$EnhancerBySpringCGLIB$$35c79fe4@1d381684

上使用。

既然我的尝试没有成功,我尝试使用Spring Security参考文档中显示的完全相同的代码

@EnableWebSecurity
public class MultiHttpSecurityConfig {
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) { 
        auth
            .inMemoryAuthentication()
                .withUser("user").password("password").roles("USER").and()
                .withUser("admin").password("password").roles("USER", "ADMIN");
    }
    @Configuration
    @Order(1)                                                        
    public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
        protected void configure(HttpSecurity http) throws Exception {
            http
                .antMatcher("/api/**")                               
                .authorizeRequests()
                    .anyRequest().hasRole("ADMIN")
                    .and()
                .httpBasic();
        }
    }
    @Configuration                                                   
    public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                    .anyRequest().authenticated()
                    .and()
                .formLogin();
        }
    }
}

为了隔离错误,我尝试用基于Java的方法替换web.xml,但也没有成功。我不知道出了什么问题,是文档有误吗?我的应用程序中的某些东西会干扰配置吗?系统启动正常,除非我注册第二个WebSecurityConfigAdapter。

这是我的依赖项:

compile 'org.springframework:spring-webmvc:4.2.2.RELEASE'
compile 'org.springframework:spring-messaging:4.2.2.RELEASE'
compile 'org.springframework:spring-websocket:4.2.2.RELEASE'
compile 'org.springframework:spring-aop:4.2.2.RELEASE'
compile'javax.servlet:javax.servlet-api:3.0.1'
compile 'org.springframework.security:spring-security-web:4.0.3.RELEASE'
compile 'org.springframework.security:spring-security-config:4.0.3.RELEASE'

0