springboot 启动后get请求任意接口地址会跳到登录页
这个问题表明您的 Spring Boot 项目引入了 Spring Security 安全依赖,它默认启用了安全防护,会自动拦截所有请求并重定向到登录页面。
🔍 问题原因
当您在项目中引入了 spring-boot-starter-security
依赖(可能直接或间接引入),Spring Security 会自动配置并要求所有请求都需要认证。
✅ 解决方案
根据您的需求选择以下方案:
方案一:完全禁用安全防护(适用于纯后端API项目)
如果您开发的是纯后端 API 项目,不需要安全认证,可以完全禁用 Spring Security。
1. 检查并排除 Security 依赖:
在 pom.xml
中检查是否有以下依赖,如果有且不需要则排除:
xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency><!-- 如果有这个依赖且不需要,可以删除 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>
2. 或者通过配置完全禁用:
创建安全配置类来禁用所有安全功能:
package com.sunplus.common.config;import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.web.builders.HttpSecurity; 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 {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/", "/update3/**","/update/**","/updateEy/**").permitAll() //白名单.antMatchers(HttpMethod.GET,"/*.html","/**/*.html","/**/*.css","/**/*.js","/**/*.jpg","/**/*.png","/**/*.ico","/**/*.ttf","/**/iconfont.*").permitAll().anyRequest().authenticated().and().formLogin().loginPage("/login").permitAll().and().logout().permitAll().and().csrf().disable();} }
特性 | permitAll() | anonymous() |
---|---|---|
认证状态 | 允许所有请求,无论是否认证 | 只允许未认证的请求 |
已认证用户 | ✅ 可以访问 | ❌ 不能访问 |
未认证用户 | ✅ 可以访问 | ✅ 可以访问 |
典型用途 | 公开API、静态资源 | 登录页、注册页 |