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并打开它
将 更改为
那你就完成了。
我有一个 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并打开它
将
那你就完成了。