通过Java配置禁用Spring Security?

时间:2014-12-30 09:20:26

标签: java spring spring-security

我有一个通过Java配置使用Spring Security的Java应用程序。

在编译中打开/关闭整个Spring Security的最简单方法是什么?

类似于this,但对于不使用XML的配置。

编辑:

应用@Profile后,我的代码如下:

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

问题是如果未激活配置文件“SecurityOn”,Spring Security将使用某些默认配置。相反,在这种情况下如何完全关闭Spring Security?

2 个答案:

答案 0 :(得分:6)

要禁用该行为,您可以添加另一个如下所示的类:

@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时这是必要的,因为有默认配置需要登录。

答案 1 :(得分:0)

考虑使用Profile功能。

由于@Profile可以作为方法级注释应用于任何@Bean方法,因此您可以使用单个配置文件(例如'secure')并注释相关的{{1}仅限方法。

然后通过 JVM系统属性,环境变量或Web应用程序指定活动配置文件作为@Bean

中的Servlet上下文参数

参考样本用量here