Spring Boot 2.0.2添加security.ignored=/**无法禁用Spring Security
Spring Boot 2.0.2中
security.ignored=/**配置不生效的解决方案 嘿,我明白你碰到的问题了——在Spring Boot 2.0.2里设置security.ignored=/**来禁用Spring Security完全没效果,还是弹出登录验证界面,对吧?这是因为这个配置项在Spring Boot 2.x版本已经被废弃移除了,官方不再支持通过这种方式忽略安全校验。
下面给你几种可行的解决方案,任选其一就能解决问题:
方案一:通过WebSecurityCustomizer Bean忽略所有请求
创建一个Spring Security配置类,注册WebSecurityCustomizer Bean来指定要忽略的路径:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public WebSecurityCustomizer webSecurityCustomizer() { // 忽略所有路径的安全校验 return (web) -> web.ignoring().antMatchers("/**"); } }
方案二:重写WebSecurityConfigurerAdapter的configure方法
继承WebSecurityConfigurerAdapter,重写configure(WebSecurity web)方法来忽略请求:
import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { // 忽略所有路径的安全校验 web.ignoring().antMatchers("/**"); } }
方案三:直接排除Spring Security自动配置类
如果你的需求是完全禁用Spring Security,可以在启动类上直接排除它的自动配置类,这是最直接的方式:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
补充说明
Spring Boot 2.0及以上版本中,security.ignored属性已经从自动配置中移除,官方文档明确推荐使用上述代码配置的方式来管理忽略的路径,所以你原来的application.properties里的配置不会被Spring识别,这就是为什么依然会出现登录界面的原因。
内容的提问来源于stack exchange,提问作者azguindou
相关产品推荐
相关产品推荐

