You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:28:20