基于配置文件的SecurityConfiguration

时间:2019-03-18 16:00:35

标签: spring-security spring-profiles

我有一个具有以下安全配置的Spring应用程序:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf().disable()
                .
                .
                .antMatchers("/**/*status*/**").permitAll()
                .antMatchers("/**/*swagger*/**").permitAll()
                .and()
                .authorizeRequests()
                .anyRequest().authenticated();
    }
}

上面的代码显示状态页面

  

http:// {{sched_api_hostname_port}} / v1 /状态

和摇摇欲坠的页面

  

http:// {{sched_api_hostname_port}} / v1 / v2 / api-docs

用于所有配置文件。我希望仅对配置文件“ dev”显示状态/麻烦页面,而对“ sit”,“ pat”和“ prod”阻止显示状态。

因此,我创建了2个配置SecurityConfigDev和SecurityConfigProd。

@Configuration
@Profile({"sit", "pat", "prod"})
public class SecurityConfigProd extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity
                .csrf().disable()
                .
                .
                .antMatchers("/**/*status*/**").denyAll()
                .antMatchers("/**/*swagger*/**").denyAll()
                .and()
                .authorizeRequests()
                .anyRequest().authenticated();
    }
}

我仍然可以看到包含所有数据和Http状态代码200的status&swagger url。我认为这可能是由于类名“ SecurityConfigProd”引起的。 您能告诉我如何根据个人资料阻止对网址的访问吗?

  • 网址不得显示任何数据
  • Http状态代码应为4 **或5 **

0 个答案:

没有答案