Spring CSRF 无法在 Tomcat 7.0.28 上运行

Spring CSRF not working on Tomcat 7.0.28

我有一个 Web 应用程序,它使用 Spring 安全版本 4.0.1 和 Spring 版本 4.1.6。
在网络应用程序的每一页中,我都有

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

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

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

因此令牌未发送到服务器,post 操作导致消息 HTTP 状态 405 - 请求方法 'POST' 不受支持
如果我在 Tomcat 7.0.5.x 上部署相同的 Web 应用程序,一切正常,它在 WAS 7、WAS 8.5 和 Jboss EAP 6.4.
中也可以正常工作 我不明白为什么在这个版本的 Tomcat (7.0.28) 上,我从网站下载而没有更改任何配置等,Spring 安全提供的 CSRF 保护不起作用。

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

我的解决方案是添加这个:

<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 并重试。

打开tomacat/confg文件夹
看到有一个文件Context.xml并打开它
更改为
那你就完成了。