2016-04-12 21 views
2

Spring Security belgeleri, Java Config'i kullanabilmek için Spring Security'nin çalışması için tüm nesesarry fasulyelerini kuracak olan AbstractSecurityWebApplicationInitializer sınıfını genişletebileceğimizi belirtir. Bu yaklaşım iyi çalışıyor, başlatıcı otomatik olarak çalıştırılıyor ve Spring Security, uygulama başlatılırken doğru şekilde başlatılıyor.Spring Security - koşullu WebApplicationInitializer

Fakat şu anda bu başlatma bir sistem özelliğine bağlı olduğunda bir senaryo ile karşı karşıyayım. Bu yüzden, başlatıcı sınıfımı yalnızca bazı sistem özelliği ayarlandığında (örneğin: app.enablesecurity=true) ve bu başlatıcıyı başka bir durumda YAZMAMANIZA eklemek istiyorum.

Ben herhangi çözümü ile gelip başarısız olduğunu senaryo çünkü: AbstractSecurityWebApplicationInitializer yılında onStartup yöntem son işaretlenmiş

  • yüzden geçersiz kılamaz ve ben sadece AbstractSecurityWebApplicationInitializer uzatın Eğer bir koşul
  • eklemek her zaman otomatik olarak Spring tarafından otomatik olarak alınır ve örnek ( özel/iç/iç içe geçmiş sınıf olarak bildirse bile) (veya bunun örneğini oluşturmak için en azından Bahar çalışır) başarısız olabilir.

Yani olarak bildiğim kadarıyla şartlı bu başlatıcı dahil tek olasılık dinamik AbstractSecurityWebApplicationInitializer genişleten bir sınıf yaratmak için CGLIB/javassist kullanmaktır.

Başka yolu var mı? Belki de uygulamamın Spring tarafından alınmasını ve daha sonra el ile çalıştırmamı engelleyecek bir yöntem var mıdır?

cevap

0

Sen güvenlik davranışını yapılandırmak için bu gibi yapılandırma Class kullanabilirsiniz

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Value("${app.enablesecurity}") 
    private boolean securityEnabled; 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     if (securityEnabled) { 
      http.csrf().disable(); 
      ... 
     } else { 
      http. ... 
     } 
    } 
} 
İlgili konular