今天早上我正在更新项目的外部库。我一次做了一个这样的库,所以如果出现问题,我确实知道更新导致了什么。
我将Spring安全性从3.2升级到4.0.1.RELEASE问题开始了。我似乎无法使用POST提交任何表单,我总是收到错误消息:
HTTP Status 405 - Request method 'POST' not supported
我确认我的映射是正确的并接受POST:
2015-07-19 13:03:21,916 [ Thread-1] INFO n.RequestMappingHandlerMapping - Mapped "{[/_/account/add],methods=[POST]}" onto public java.lang.String com..web.AccountController.add(com..web.data.Account,org.springframework.validation.BindingResult,org.springframework.ui.Model,org.springframework.web.servlet.mvc.support.RedirectAttributes,javax.servlet.http.HttpServletRequest)
2015-07-19 13:03:21,916 [ Thread-1] INFO n.RequestMappingHandlerMapping - Mapped "{[/_/account/add],methods=[GET]}" onto public java.lang.String com..web.AccountController.add(com..web.data.Account,org.springframework.ui.Model)
我非常怀疑这与spring-security从3.2升级到4.0.1有关,因为一切都与3.2一起正常工作。
当使用spring security 4.0.1时,有人知道导致“请求方法'POST'不受支持的原因吗?
答案 0 :(得分:2)
哎呀,我应该读过"新的"文档好一点。在spring security 4.0.1中,默认情况下启用了CSRF。将csrf标记添加为隐藏字段可以解决问题:
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>