Я пытался зарегистрировать несколько фильтров в своей конфигурации Spring Security, однако всегда получаю одно и то же исключение:
04-Nov-2015 14: 35: 23.792 ВНИМАНИЕ [Соединение RMI TCP (3) -127.0.0.1] org.springframework.web.context.support.AnnotationConfigWebApplicationContext.refresh Исключительная ситуация при инициализации контекста - отмена попытка обновления org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем 'Org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Инъекция автосвязанных зависимостей не удалась; вложенное исключение java.lang.IllegalStateException: @Order на WebSecurityConfigurers должен быть уникальный. Порядок 100 уже использовался, поэтому его нельзя использовать на com.payment21.webapp.MultiHttpSecurityConfig$ApiW[email protected]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();
}
}
}
Чтобы изолировать ошибку, я попытался заменить web.xml на подход, основанный на Java, но он тоже не сработал. Я понятия не имею, что не так, док не так? Может в моем приложении что-то путать с настройкой? Система запускается правильно, если я не зарегистрирую второй 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'