2014-12-30 17 views
5

Tôi có một ứng dụng Java có sử dụng Spring Security thông qua cấu hình Java.Tắt tính năng Bảo mật mùa xuân qua cấu hình Java?

Phương pháp dễ nhất để chuyển đổi toàn bộ Spring Security bật/tắt trong khi biên dịch là gì?

Vì vậy, một cái gì đó như this, nhưng đối với cấu hình không sử dụng XML.

EDIT:

Sau khi áp dụng @Profile mã của tôi trông giống như:

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

Vấn đề là nếu hồ sơ cá nhân "SecurityOn" không được kích hoạt, Spring Security sử dụng một số cấu hình mặc định. Thay vào đó, làm thế nào để tắt Spring Security hoàn toàn trong trường hợp đó?

Trả lời

0

Cân nhắc sử dụng tính năng Profile.

Kể từ @Profile có thể được áp dụng như phương pháp cấp chú thích trên bất kỳ phương pháp @Bean bạn có thể sử dụng hồ sơ đơn (ví dụ 'bảo vệ') và chú thích các @Bean phương pháp thích hợp (s) mà thôi.

Sau đó, xác định cấu hình hoạt động (s) thông qua một trong hai thuộc tính hệ thống JVM, như là một biến môi trường, hoặc cho các ứng dụng web như một tham số bối cảnh Servlet trong web.xml

Tham khảo mẫu sử dụng here.

+1

Cảm ơn! Tôi đã không sử dụng @Profiles cho đến nay, vì vậy đây là một bài học có giá trị, nhưng vấn đề vẫn tồn tại. Xem EDIT trong câu hỏi. – masa

3

Để vô hiệu hóa hành vi đó, bạn có thể thêm một lớp trông như thế này:

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

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

Sau đó, khi bạn chạy ứng dụng của bạn, thời gian duy nhất bạn sẽ cần phải đăng nhập sẽ là khi cấu hình SecurityOn là hoạt động. Nếu bạn đang sử dụng Maven và Spring Boot, lệnh để bật đăng nhập sẽ như sau.

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

Chạy nó mà không có một cấu hình, hoặc một hồ sơ khác nhau, sẽ disable đăng nhập. Điều này rất hữu ích cho phát triển địa phương.

Tôi thấy điều này là cần thiết khi sử dụng spring-boot-starter-security vì có cấu hình mặc định yêu cầu đăng nhập.

Các vấn đề liên quan