Spring CSRF不支持Tomcat 7.0.28

时间:2015-12-12 08:16:19

标签: spring spring-security tomcat7 csrf-protection

我有一个使用Spring Security,版本4.0.1和Spring版本4.1.6的Web应用程序 在网页应用的每个页面中,我都有

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

将CSRF令牌发送到服务器的参数。现在我的问题是如果我看到jsp的源代码我有

<input type="hidden" name="" value=""/>

因此令牌不会发送到服务器,后置操作会产生消息 HTTP状态405 - 请求方法&#39; POST&#39;不支持
如果我在Tomcat 7.0.5.x上部署相同的Web应用程序,一切正常,它在WAS 7,WAS 8.5和Jboss EAP 6.4中也能正常工作。
我无法理解为什么在这个版本的Tomcat(7.0.28)上,我从网站上下载而没有改变任何关于配置等的东西,Spring Security提供的CSRF保护不起作用。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题:Tomcat 7.0.28无法自动检测弹簧安全过滤器。

我的解决方案是添加:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

到web.xml并再试一次。

答案 1 :(得分:0)

打开 tomacat / confg 文件夹
看到有一个文件 Context.xml 并打开它 将&lt; Context&gt; 更改为&lt; Context useHttpOnly =“false”&gt;
那你已经完成了。