我在stackoverflow上发现了大量关于如何在spring boot中禁用安全性的博客文章和问题,但这些似乎都不适用于spring boot 2.2.4。
我之所以这么问,是因为我想对我的开发和测试配置文件禁用安全性,这样我们就可以在不生成jwt令牌的情况下进行部署。
从我的角度来看,最有前途的方法是通过属性文件排除SecurityAutoConfiguration
类,但如上所述,排除无效。
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
其他属性(如management.security.enabled
(似乎已被弃用。
我在spring-boot-github问题中找到了一个有效的解决方案。
禁用整个应用程序的安全性:
@SpringBootApplication ( exclude = {SecurityAutoConfiguration.class} )
@Import(MySecurityConfiguration.class)
public class MyApplication{
}
并通过安全配置中的参数启用:
@Configuration
@ConditionalOnProperty ( "my.security.enabled" )
@Import ( SecurityAutoConfiguration.class
public class MySecurityConfiguration extends WebSecurityConfigurerAdapter {
}
来源:https://github.com/spring-projects/spring-boot/issues/12323#issuecomment-370519882
您可以为您的配置文件创建一个WebSecurityConfigurerAdapter Bean,其中包含以下overriden方法实现,以从spring安全中排除所有端点:
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers(
"/**"
);
}