У меня есть класс, который должен инициализировать цепочку фильтров самостоятельно
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}
, но все равно я получаю noSuchBeanDefinException.
Мой webSecurityConfig
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/admin/**")
.access("hasRole('ADMIN')").and().formLogin()
.loginPage("/login").failureUrl("/login?error")
.usernameParameter("username")
.passwordParameter("password")
.and().logout().logoutSuccessUrl("/login?logout")
.and().csrf()
.and().exceptionHandling().accessDeniedPage("/403");
}
@Bean
public PasswordEncoder passwordEncoder() {
PasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder;
}
}
и вот мой AppInitialiser
public class WebAppInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { HibernateConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
Я пытался использовать WebSecurityConfig.class в AppInit, но затем он показывает ошибку, из-за которой мой класс обслуживания, который автоматически подключается в SecurityConfig, не инициализируется, когда работает класс AppInit.Кроме того, каждый онлайн-пример делает то, что я делаю.Они просто используют SecurityWebApplicationInitializer.