首先,这是对Spring MVC 3.1.x http://blog.eyallupu.com/2012/04/csrf-defense-in-spring-mvc-31.html的引用,我试图实现RequestDataValueProcessor并添加了一个
<bean name="requestDataValueProcessor" class="my.class"/>
到我的servlet的上下文文件。
我可以从启动的调试输出中看到创建了bean,但是没有调用任何方法,所呈现的页面上的表单不包含特殊的隐藏值,当然,HandlerInterceptor看到并为所有POST尝试返回403。
我确信3.1.4版春季罐子是我战争中的东西。仅仅创建一个具有给定名称的bean似乎非常......神奇。我错过了还需要做什么?
答案 0 :(得分:1)
没关系。
由于瞬态依赖性问题,Maven拖延了Spring的3.0.x依赖项。强制大规模的Spring 3.0排除修复了这个问题。
答案 1 :(得分:1)
可能对其他人有用,但bean名称在源代码中是硬编码的( RequestContext ),因此您应该只使用 requestDataValueProcessor 作为bean名称。例如,您正在使用Spring security&gt; 3.2然后:
<bean name="requestDataValueProcessor" class="org.springframework.security.web.servlet.support.csrf.CsrfRequestDataValueProcessor"/>