2013-07-25 95 views
1

首先,這是參考Spring MVC的3.1.X http://blog.eyallupu.com/2012/04/csrf-defense-in-spring-mvc-31.html,我設法執行RequestDataValueProcessor並增加了一個RequestDataValueProcessor方法從來不被稱爲

<bean name="requestDataValueProcessor" class="my.class"/> 

到我的servlet的背景文件。

我可以從啓動的調試輸出中看到bean已創建,但沒有任何方法會被調用,呈現的頁面上的表單不包含特殊的隱藏值,當然,HandlerInterceptor看到它併爲所有POST嘗試返回403。

我確信3.1.4發佈Spring Jars是我的戰爭中的東西。僅僅用一個給定的名字創建一個bean似乎非常神奇。我還有什麼需要做的,我錯過了?

回答

1

沒關係。

原因是由於瞬態相關性問題,Maven正在拖拽Spring的3.0.x依賴項。強制大規模的Spring 3.0排除解決了這個問題。

1

可能對他人有用的,但bean的名稱在源(的RequestContext)硬編碼的,所以你應該只使用requestDataValueProcessor作爲一個bean的名字。比如你用的是spring security> 3.2 then:

<bean name="requestDataValueProcessor" class="org.springframework.security.web.servlet.support.csrf.CsrfRequestDataValueProcessor"/>