, um verschiedene Dinge zu tun in verschiedenen Umgebungen zu deaktivieren, sollten Sie Spring Profiles
verwenden Sie Sicherheitskonfiguration Bohne Angenommen, brauchen Sie nur in der Produktionsumgebung, dann sollte es als bedingt geladen markieren, wenn ein bestimmtes Profil aktiviert ist.
@Configuration //gets picked up automatically by spring-boot
@Profile("Production")
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(details).passwordEncoder(new BCryptPasswordEncoder());
}
}
Profil spezifische Konfiguration wird in Eigenschaftsdateien getan namens application-{profile}.properties
und bootstrap-{profile}.properties
Dateien.
Jetzt, da Sicherheitskonfiguration Bean mit Profil Production
markiert ist, wird es nur geladen, wenn Production
Profil aktiviert ist.
Um ein Profil zu aktivieren, müssen Sie folgende Eigenschaft einstellen.
#One or more profiles can be active simultaneously
spring.profiles.active=Production,Dev,Local
Diese Eigenschaft kann entweder in den gemeinsamen Eigenschaften application.properties
(immer anders als Profildateien spezifische Eigenschaften wie application-Production.properties
geladen, die bedingt geladen werden) Datei bearbeitet werden oder es kann, wie unten als Umgebungsvariablen zur Verfügung gestellt.
On Windows
set SPRING_PROFILES_ACTIVE=Production
On Unix
export SPRING_PROFILES_ACTIVE=Production
Es kann mit einer Million anderer Möglichkeiten, die Feder unterstützt, um Eigenschaften zu laden getan werden. Für eine Liste aller Methoden gehen Sie über diesen Link https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
Schließlich, um die Standard-Spring-Sicherheit (Basic) Autoconfiguration zu deaktivieren, können Sie folgende Eigenschaften verwenden.
Oben sollte in den profilspezifischen Eigenschaftendateien sein, in denen Sie die automatische Konfiguration von Spring Security deaktivieren möchten.
Wie oben geschrieben, ich habe bereits versucht, 'security.basic.enabled = false' verwenden, die normalerweise funktionieren sollte, aber nicht der Fall ist, wenn mit' 'WebSecurityConfigurerAdapter. – membersound
Das liegt daran, dass 'WebSecurityConfigurerAdapter' immer noch eine Bean erstellt, die wie am Anfang der Antwort erwähnt bedingt geladen werden muss. – 11thdimension
Ich erweiterte WebSecurityConfigurerAdapter zweimal und arbeitete wie oben beschrieben. Lief wie am Schnürchen. – DOUBL3P