2015-07-19 151 views
0

今天早上我正在更新項目的外部庫。我一次只做了一個這樣的庫,所以如果出現問題,我確實知道是什麼更新引起的。春季安全4.0.1不支持請求方法'POST'

在我將3.2版本的spring安全性升級到4.0.1.RELEASE後,問題開始了。看來我不能提交任何形式的文章中,我總是得到錯誤信息:

HTTP Status 405 - Request method 'POST' not supported 

我證實,我的映射是正確的,並接受郵政:

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) 

我高度懷疑這是關係到從3.2到4.0.1的春季安全性的升級,因爲一切都在3.2正確工作。

有人在使用spring security 4.0.1時知道是什麼原因導致「請求方法」POST'不支持「嗎?

回答

2

糟糕,我應該閱讀「最新消息」文檔好一點。看來CSRF在Spring Security 4.0.1中默認啓用。將csrf標記添加爲隱藏字段的訣竅是:

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

你確定你的問題解決了嗎?我記得CSRF的問題,如果它沒有提供,或者過期的提供到目前爲止,它會拋出403(拒絕訪問不是405)。 – Aubergine

+1

@Aubergine tomcat確實在這裏顯示了「HTTP狀態405 - 請求方法」POST'不支持',這可能是由我的配置引起的。但是用csrf標記我再也看不到這個錯誤了。雖然需要更多的疑惑,但升級到4.0.1並不像我想象的那麼容易。 – TinusSky

+1

如果您使用logback配置,請嘗試設置記錄器級別以進行調試/跟蹤: 這節省了我,並一直爲我節省了很多時間因爲春天可以告訴你一個相當詳細的故事。 – Aubergine