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

Spring Boot集成Spring Security后购物车出现403错误排查

Spring Security 集成后购物车删除功能403错误排查与解决

集成Spring Security后,购物车删除操作触发403禁止访问,CartController的delete方法中logger.info("NUMBER"+cart_id)完全未执行,核心原因是CSRF令牌未正确传递,导致Spring Security拦截了请求。

问题代码分析

前端Cart.html中的CSRF隐藏字段存在表达式解析问题:

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

这段代码未使用Thymeleaf的th:前缀,导致Thymeleaf不会解析${_csrf.parameterName}和${_csrf.token}表达式,提交的表单中CSRF参数名和令牌是原始字符串,而非Spring Security生成的有效令牌,因此被CSRF防护拦截。

解决方案

修改CSRF隐藏字段,添加Thymeleaf前缀以正确解析表达式:

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

额外优化(可选)

如果使用Thymeleaf与Spring Security集成,可通过th:action自动注入CSRF令牌,无需手动编写隐藏字段:

<form method="post" th:action="@{/orderAdd}">

Thymeleaf会自动为带有th:action的表单添加CSRF隐藏字段,简化代码。

验证步骤

  1. 修改代码后,刷新页面并查看HTML源码,确认CSRF隐藏字段的name为_csrf(或Spring Security配置的参数名),value为随机字符串格式的有效令牌。
  2. 测试删除操作,检查CartController的delete方法是否执行,logger.info日志是否正常打印。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:20:36