2013-08-09 3 views
15

Sto utilizzando la libreria spring-security-javaconfig per la sicurezza di primavera. Se dovessi usare file di configurazione XML, userei qualcosa di simile per definire una pagina di accesso personalizzato negato:Come aggiungere un gestore di accesso negato in spring-security-javaconfig

<http auto-config="true"> 
    <intercept-url pattern="/admin*" access="ROLE_ADMIN" /> 
    <access-denied-handler ref="accessDeniedHandler"/> 
</http> 

Ecco la mia sicurezza classe di configurazione finora:

@Configuration 
@EnableWebSecurity 
public class SecurityConfigurator extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void registerAuthentication(AuthenticationManagerBuilder auth) 
      throws Exception { 
     auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); 
     auth.inMemoryAuthentication().withUser("admin").password("password").roles("ADMIN"); 

    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeUrls().antMatchers("/admin").hasRole("ADMIN"); 
    } 
} 
+1

Nota che invocare inMemoryAuthentication() più volte è in realtà la creazione di più istanze InMemoryUserDetailsManager. Se non vuoi mettere in catena il metodo, puoi memorizzare la chiamata su auth.inMemoryAuthentication() in una variabile. Oppure puoi usare il metodo di concatenazione come schema negli esempi https://github.com/SpringSource/spring-security-javaconfig/blob/master/samples-web.md#sample-web-security-spring-java-config –

risposta

30

Suppongo che questo dovrebbe fare il trucco:

HttpSecurity http = ... 
http.exceptionHandling().accessDeniedHandler(myAccessDeniedHandler);