纯Spring Security用户认证失效问题排查求助
纯Spring Web应用认证请求无法到达AuthController的排查方案
1. 检查Spring Security拦截规则
在SecurityConfig的configure(HttpSecurity http)方法中,确认登录请求路径已被放行:
- 需添加
http.authorizeRequests().antMatchers("/你的登录接口路径").permitAll() - 确保配置的路径与登录表单
action属性完全一致(注意大小写、斜杠前缀)
2. 验证SecurityInitializer配置
纯Spring Web环境下,SecurityInitializer需继承AbstractSecurityWebApplicationInitializer:
- 确认构造方法传入了
SecurityConfig.class,保证Spring Security配置被加载 - 不要随意覆盖
beforeSpringSecurityFilterChain等核心方法,避免过滤器链加载异常
3. 核对AuthController路径匹配
- 检查
@PostMapping的路径与表单action完全匹配,比如表单是<form action="/auth/login" method="post">,控制器需对应@PostMapping("/auth/login") - 确认控制器类添加了
@Controller注解,且所在包在Spring组件扫描范围内 - 若存在类级别的
@RequestMapping前缀,需计算完整请求路径是否正确
4. 排查CSRF防护影响
Spring Security默认开启CSRF防护,未携带令牌的请求会被拦截:
- 查看错误日志是否存在
Invalid CSRF Token相关报错 - 测试环境可临时关闭:
http.csrf().disable();生产环境需在表单中添加CSRF令牌字段:<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
5. 检查过滤器链执行顺序
确保Spring Security过滤器在DispatcherServlet之前执行:
- 查看错误日志是否有请求被其他自定义过滤器拦截的记录
- 确认
web.xml中DispatcherServlet的映射规则未覆盖登录请求路径
6. 分析错误日志关键信息
从日志中定位核心问题:
- 若出现
Access Denied,说明权限拦截规则配置错误 - 若请求未进入DispatcherServlet,可能是容器路径映射或初始化配置问题
- 若返回404,说明控制器路径与请求路径不匹配
内容的提问来源于stack exchange,提问作者DoWhileFor
相关产品推荐
相关产品推荐

