我一直在使用 Spring Security 3.2.0.RC1 中的新 csrf 功能,并注意到它似乎不适用于 enctype="multipart/form-data" 表单。
我有一个简单的 Spring 表单:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
...
<form:form action="${pageContext.request.contextPath}/model/create" modelAttribute="myForm" enctype="multipart/form-data">
并且隐藏的 csrf 输入正在按预期呈现:
<input type="hidden" value="..." name="_csrf">
但该请求未能通过 csrf 检查(如果我删除 enctype="multipart/form-data",它工作正常)。我发现的唯一方法是将“?_csrf = ...”附加到我的操作url,这很丑陋,因为令牌然后出现在重定向的地址栏中。有没有人经历过同样的/找到了一个很好的解决方案?