首页 > 解决方案 > Spring Boot 表单请求跟踪

问题描述

我正在开发一个 Spring Boot MVC 应用程序,并考虑如何实现双表单提交问题的解决方案。

我正在考虑的解决方案是生成一个唯一的 id 并在用户请求时将其附加到表单中。然后,当用户提交表单时,将收到的 id 与原始 id 进行比较,如果匹配,则发送。如果有更多请求进来,我可以看到这是重复提交并拒绝请求。

解决方案很简单,我希望我也能找到一个简单的实现。我有大约 8 种不同的 Thymeleaf 表单需要通过添加唯一 ID 来更新,我真的不想将 ID 添加到支持 Thymeleaf 表单的 POJO 中。有没有一种方法可以将唯一 ID 添加到将返回的 http 标头或类似的不需要更新 Java Pojos 的东西?谢谢

标签: springformsspring-bootthymeleaf

解决方案


您可以在表单中包含 CSRF 令牌,Spring 会自动处理它,但如果您尚未在项目中使用它,您可能需要包含 Spring Security。

例如

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

CSRF 的官方 Spring 文档和示例


推荐阅读