2014-12-30 6 views
5

У меня есть приложение Java, которое использует Spring Security с помощью конфигурации Java.Отключить Spring Security с помощью конфигурации Java?

Что такое самый простой способ включения/выключения всей Spring Security в компиляции?

Так что примерно this, но для конфигурации, которая не использует XML.

EDIT:

После применения @Profile моего кода выглядит следующим образом:

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

Проблема заключается в том, что если профиль "SecurityOn" не активирован, Spring Security использует конфигурацию некоторые по умолчанию. Вместо этого, как отключить Spring Security в этом случае?

ответ

0

Рассмотрите возможность использования функции Profile.

Поскольку @Profile может быть применен в качестве аннотации метод уровня по любому @Bean метода вы можете использовать один профиль (например, «безопасный») и аннотировать соответствующий @Bean метод (ы) только.

Затем указать активный профиль (ы) с помощью любого из свойств системы виртуальной машины Java , как переменная среды, или для веб-приложений в качестве параметра контекста сервлета в web.xml

См использование образца here.

+1

Спасибо! Я пока не использовал @Profiles, поэтому это был ценный урок, но проблема не устранена. См. EDIT в вопросе. – masa

3

Чтобы отключить это поведение, вы можете добавить еще один класс, который выглядит следующим образом:

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

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

Затем, когда вы запускаете приложение, единственный раз, когда вам необходимо войти в систему будет, когда SecurityOn профиль активный. Если вы используете Maven и Spring Boot, команда включает в себя: логин будет следующим.

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

Запуск без профиля или другого профиля, будет отключить Войти. Это полезно для местного развития.

Я нашел, что это необходимо при использовании spring-boot-starter-security, потому что была настройка по умолчанию, требующая входа в систему.

Смежные вопросы