Spring Boot项目WebSecurityConfigurerAdapter配置类未被调用问题求助
问题根因&解决方案
- 移除启动类的Security自动配置排除
你主启动类的注解@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })直接关闭了Spring Security的所有自动装配逻辑,这是你自定义安全配置类完全不生效、所有println都不打印的核心原因。
修改方式:把启动类注解中的exclude = { SecurityAutoConfiguration.class }删除,修改后启动类代码为:
- 移除启动类的Security自动配置排除
@SpringBootApplication @EntityScan({"com.shopme.common.entity", "com.shopme.admin.user"}) public class ShopmeBackendApplication { public static void main(String[] args) { SpringApplication.run(ShopmeBackendApplication.class, args); } }
- 删除主控制器中自定义的POST登录接口
你在MainController中写了@PostMapping("/login")的方法,直接覆盖了Spring Security默认的登录请求处理逻辑,导致登录提交不会走认证校验、直接跳转首页。
修改方式:删除MainController中的如下代码即可:
- 删除主控制器中自定义的POST登录接口
@PostMapping("/login") public String login() { System.out.println("login attempt"); return "index"; }
Spring Security会自动接管/login路径的POST请求,执行你配置的用户名密码校验逻辑。
- 可选优化(后续切换自定义认证时需要)
你当前写的authenicationProvider()方法没有加@Bean注解,如果后续要切换为自定义的ShopmeUserDetailsService认证,需要给这个方法加上@Bean注解,同时放开configure(AuthenticationManagerBuilder auth)方法中对应注释的代码即可。
- 可选优化(后续切换自定义认证时需要)
验证效果
修改完成后重启项目:
- 控制台会打印你在WebSecurityConfig中写的所有System.out内容,说明配置类已经被正常加载
- 访问任意需要权限的路径(如
/users)会自动跳转到/login登录页 - 输入你配置的内存用户名密码(如admin/adminPass)即可成功登录,跳转至系统页面
内容的提问来源于stack exchange,提问作者daryeljohnson
相关产品推荐
相关产品推荐

