2014-12-30 18 views
5

Possiedo un'applicazione Java che utilizza Spring Security tramite la configurazione Java.Disabilita Spring Security tramite la configurazione Java?

Qual è il metodo più semplice per attivare/disattivare l'intera Spring Security nella compilazione?

Quindi qualcosa come this, ma per una configurazione che non utilizza XML.

EDIT:

Dopo l'applicazione @profile il mio codice è simile:

@Configuration 
@Profile("SecurityOn") 
@EnableWebMvcSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

Il problema è che se il profilo "SecurityOn" non è attiva, Primavera Security utilizza alcune configurazioni di default. Invece, come disattivare completamente Spring Security in quel caso?

risposta

0

Considerare l'utilizzo della funzione Profile.

Dal @Profile può essere applicato come a livello di metodo di annotazione su qualsiasi metodo @Bean è possibile utilizzare solo profilo (ad esempio 'sicuro') e annotare il @Bean metodo in questione (s) solo.

quindi specificare il profilo attivo (s) tramite una delle proprietà del sistema JVM , come variabile di ambiente, o per applicazioni web come un parametro di contesto servlet in web.xml

consultare utilizzo di esempio here.

+1

Grazie! Finora non ho usato @Profiles, quindi questa è stata una lezione preziosa, ma il problema persiste. Vedi EDIT nella domanda. – masa

3

Per disattivare questo comportamento, è possibile aggiungere un'altra classe che assomiglia a questo:

@Configuration 
@EnableWebMvcSecurity 
@Profile("!SecurityOn") 
public class WebSecurityConfigDisable extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
      .antMatchers("/**").permitAll(); 
    } 
} 

Poi, quando si esegue l'applicazione, l'unica volta che avrete bisogno di effettuare il login sarà quando il profilo è SecurityOn attivo. Se stai usando Maven e Spring Boot, il comando per abilitare abilita il login sarebbe il seguente.

mvn spring-boot:run -Dspring.profiles.active=SecurityOn 

esecuzione senza un profilo o un profilo diverso, sarà disabilitare login. Questo è utile per lo sviluppo locale.

Ho trovato questo era necessario quando si utilizza spring-boot-starter-security perché c'era la configurazione predefinita che richiedeva l'accesso.

Problemi correlati