Ich versuche, Spring Security zu verwenden, und ich habe einen Anwendungsfall, bei dem ich verschiedene Anmeldeseiten und verschiedene URLs sichern möchte.Spring Security: Mehrere HTTP Config funktioniert nicht
Hier ist meine Konfiguration:
@Configuration
@Order(1)
public static class ProviderSecurity extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.antMatchers("/admin/login").permitAll()
.antMatchers("/admin/**").access("hasRole('BASE_USER')")
.and()
.formLogin()
.loginPage("/admin/login").permitAll()
.defaultSuccessUrl("/admin/home")
.failureUrl("/admin/login?error=true").permitAll()
.usernameParameter("username")
.passwordParameter("password")
.and()
.csrf()
.and()
.exceptionHandling().accessDeniedPage("/Access_Denied");
}
}
@Configuration
@Order(2)
public static class ConsumerSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/consumer/login").permitAll()
.antMatchers("/consumer/**").access("hasRole('BASE_USER')")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/consumer/login").permitAll()
.defaultSuccessUrl("/consumer/home")
.failureUrl("/consumer/login?error=true").permitAll()
.usernameParameter("username")
.passwordParameter("password")
.and().csrf()
.and()
.exceptionHandling().accessDeniedPage("/Access_Denied");
}
}
Diese Klassen sind innere Klassen einer anderen Klasse MultipleHttpSecurityConfig
die Annotation @EnableWebSecurity
hat.
Die Sicherheit für admin/**
funktioniert gut, aber keine der consumer/**
Seiten sind gesichert, keine Umleitung geschieht für die Anmeldeseite. Ich habe nach anderen Antworten gesucht, aber keine funktionierte.