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

提交登录至/perform_login时Spring Security出现StackOverflowError

Spring Security登录触发StackOverflowError的排查与解决

问题场景

使用Spring Security框架时,提交登录表单到配置的.loginProcessingUrl("/perform_login")接口后,直接触发了StackOverflowError。

核心原因排查

通过对代码(Members实体、MemberRepository、CustomUserDetailsService、MemberSecurityService、SecurityConfiguration等)和错误日志分析,定位到问题根源:

  • 项目里同时存在两个实现了UserDetailsService接口的类:CustomUserDetailsService和MemberSecurityService,且二者都重写了loadUserByUsername方法。
  • 这导致Spring Security在处理用户认证、加载用户详情的流程中出现无限递归调用,最终耗尽栈空间引发StackOverflowError。

解决方案

删除MemberSecurityService类(或根据业务需求调整,确保Spring容器中仅存在一个有效的UserDetailsService实现类Bean),即可解决无限循环导致的栈溢出问题。

补充说明

Spring Security在认证流程中会自动查找并使用UserDetailsService类型的Bean加载用户信息,当存在多个该接口的实现类时,容易出现循环依赖或重复调用的情况,进而触发栈溢出。确保仅保留一个符合业务需求的UserDetailsService实现,是避免这类问题的关键。

内容的提问来源于stack exchange,提问作者noob_kr_computer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:53:10