Spring Security, сконфигурированный java конфигом. В интернете гигабайты текста исписаны о том, как конфигурировать Spring Security в xml, и пару килобайт о том, как сделать то же самое в java конфиге. Ну как, то же самое. Несколько одинаковых статей, описывающих очевидные моменты и не дающих никакой конкретики. Поэтому у меня к вам 2 вопроса: 1. Почему по прежнему разрешен доступ к урлу, подпадающему под паттерн /#!admin/**? 2. Как его, собственно, запретить пользователям, которые не входят в роль GOD?
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("admin").roles(Role.GOD.toString());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.and()
.formLogin()
.loginPage("/#!auth")
.permitAll()
.and()
.authorizeRequests()
.antMatchers("/#!admin/**").hasAnyRole(Role.GOD.toString())
.and()
.csrf()
.disable();
}
}
Регистрация конфига:
public class TaisWebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(TaisConfiguration.class);
ctx.register(SecurityConfiguration.class);
servletContext.addListener(new ContextLoaderListener(ctx));
}
}
UPD: Spring Security 3.2.3.RELEASE, Spring 4.0.2.RELEASE.