Spring security 4.0.1不支持请求方法'POST'

时间:2015-07-19 11:12:06

标签: java spring-security

今天早上我正在更新项目的外部库。我一次做了一个这样的库,所以如果出现问题,我确实知道更新导致了什么。

我将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'不受支持的原因吗?

1 个答案:

答案 0 :(得分:2)

哎呀,我应该读过"新的"文档好一点。在spring security 4.0.1中,默认情况下启用了CSRF。将csrf标记添加为隐藏字段可以解决问题:

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