如何移除Spring Boot应用中Spring Security的强制登录验证?
嘿,这个问题我太熟了!这就是Spring Boot默认的Spring Security自动配置在搞事情——它会自动启用表单登录,还生成随机密码。别慌,给你几个靠谱的解决办法,按需选就行👇
方法一:直接移除Spring Security依赖(完全不需要安全校验时用)
如果你的项目压根不需要任何安全验证逻辑,最简单粗暴的办法就是把依赖删掉:
- 如果你用Maven,找到
pom.xml里这段代码删掉:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
- 如果你用Gradle,找到
build.gradle里这段代码删掉:
implementation 'org.springframework.boot:spring-boot-starter-security'
删完重启项目,登录窗口就彻底消失啦。
方法二:保留依赖但禁用默认安全配置
要是你之后可能还要用到Spring Security的功能,不想删依赖,那可以通过配置来关掉默认的验证逻辑,有两种方式:
方式1:用配置文件快速关闭
直接在application.properties或者application.yml里加一行配置就行:
application.properties:
spring.security.enabled=false
application.yml:
spring: security: enabled: false
这个方式最快,适合临时或者快速关闭验证。
方式2:自定义安全配置类(更灵活)
如果你想更灵活地控制安全规则(比如以后要加自定义验证),可以写个配置类:
针对Spring Boot 2.x及以下版本:
import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 允许所有请求直接访问 http.authorizeRequests().anyRequest().permitAll(); // 可选:如果不需要CSRF防护,可以关掉 http.csrf().disable(); } }
针对Spring Boot 3.x及以上版本(WebSecurityConfigurerAdapter已被弃用):
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(auth -> auth // 允许所有请求访问 .anyRequest().permitAll()) // 可选:关闭CSRF防护 .csrf(csrf -> csrf.disable()); return http.build(); } }
方法三:自定义部分验证规则(需要部分接口验证时用)
要是你只是不想让所有请求都跳登录,但某些敏感接口需要验证,那可以在配置类里细化规则,比如:
// Spring Boot 3.x示例 @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(auth -> auth // 指定公开路径,不需要登录就能访问 .requestMatchers("/public/**", "/index", "/api/hello").permitAll() // 其他所有路径都需要登录验证 .anyRequest().authenticated()) // 允许登录页面公开访问 .formLogin(form -> form.permitAll()); return http.build(); } }
这样只有非公开的接口才会触发登录,公开路径直接就能访问啦。
内容的提问来源于stack exchange,提问作者user9269133
相关产品推荐
相关产品推荐

