1

首先,这是对 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 版本的 Spring jar 是我的战争中的内容。仅仅创建一个具有给定名称的 bean 似乎非常……神奇。我还需要做哪些我错过的事情?

4

2 回答 2

1

没关系。

事实证明,由于暂时的依赖问题,Maven 正在为 Spring 拖入 3.0.x 依赖项。强制大量 Spring 3.0 排除解决了这个问题。

于 2013-07-25T23:41:36.613 回答
1

可能对其他人有用,但 bean 名称在源 ( RequestContext ) 中是硬编码的,因此您应该只使用requestDataValueProcessor作为 bean 名称。例如,您使用的是 Spring security > 3.2 那么:

<bean name="requestDataValueProcessor" class="org.springframework.security.web.servlet.support.csrf.CsrfRequestDataValueProcessor"/>
于 2013-12-20T16:00:59.927 回答