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

Spring Security 3.2升级到5.8时表单登录出现403/404问题

Spring Security 3.2升级到5.8的登录配置问题

我正在将应用从Spring Security 3.2升级到5.8。按照官方XML文档配置后遇到两个问题:

  • 未添加<security:http security="none" pattern="/dologin" />时,访问/dologin会出现403错误;
  • 添加该配置后,又出现404错误。

我的form-login配置如下:

<security:form-login 
    login-page="/login" 
    login-processing-url="/dologin"
    default-target-url="/secure/user/dashboard"
    always-use-default-target='true'
    authentication-failure-url="/login?error" />

相关DEBUG日志信息:

DEBUG: org.springframework.security.web.context.SecurityContextPersistenceFilter - Cleared SecurityContextHolder to complete request
DEBUG: org.springframework.security.web.FilterChainProxy - Securing POST /dologin
DEBUG: org.springframework.security.web.context.SecurityContextPersistenceFilter - Set SecurityContextHolder to empty SecurityContext
DEBUG: org.springframework.security.web.csrf.CsrfFilter - Invalid CSRF token found for http://localhost:8080/dologin
DEBUG: org.springframework.security.web.access.AccessDeniedHandlerImpl - Responding with 403 status code
DEBUG: org.springframework.security.web.context.HttpSessionSecurityContextRepository - Did not store empty SecurityContext

问题分析与解决

从日志能直接看出,403的核心原因是CSRF令牌无效。Spring Security 4及以上版本默认启用了CSRF保护,而3.2版本默认关闭,这是升级后触发问题的关键。

解决403错误

别加security="none"的配置,/dologin是Spring Security登录过滤器专门处理的路径,不能排除在安全链外。正确操作是在登录页面的表单里添加CSRF令牌:
在/login页面的form表单中插入以下代码:

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />

表单提交时携带这个令牌,就能通过CSRF校验,解决403问题。

为什么加security="none"会出404

一旦把/dologin设为security="none",Spring Security的过滤链就不会处理这个请求,而你的应用里又没有自定义控制器来接收/dologin的POST请求,自然返回404。必须让Spring Security的登录过滤器处理这个路径,所以不能排除它。

额外提示

  • 确保登录表单的提交方法是POST,且提交路径和login-processing-url配置的/dologin完全一致;
  • 如果你的应用是纯后端服务(无前端表单提交),确实不需要CSRF保护(不推荐面向用户的应用这么做),可以在http配置里关闭CSRF:
<security:http>
    <!-- 其他原有配置 -->
    <security:csrf disabled="true" />
</security:http>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:13:11