【发布时间】:2016-01-21 10:13:53
【问题描述】:
Spring security 通过将<csrf /> 标签应用到<http> 元素配置中,提供了一种配置CSRF 保护的XML 方式。
出于开发目的,我想偶尔关闭此类保护。通常我会编辑我的security-context.xml 文件并更改为<csrf disabled="true">。
我尝试使用 <csrf disabled="${someProperty:false}" /> 之类的表达式,但它无效,因为 XML 架构只接受原始布尔值。
我不想将整个 bean 配置文件(用于整个 <http> 元素)仅用于有时必须打开/关闭的单个参数。
有什么建议吗?
附加信息
为了使用 RESTClient 对经过身份验证的控制器执行一些单元测试(当我懒得将 JUnit 与 MockMvc 一起使用时)我都需要绕过表单身份验证(例如使用 <http-basic /> 并在凭据上指示 RESTClient)并禁用 CSRF ,否则所有请求都将因缺少令牌而被阻止。
我的应用程序是一个 WAR 应用程序,根据设计它使用 XML 配置而不是基于代码的配置
【问题讨论】:
-
您可以尝试在运行您的应用程序时传递 -Dsecurity.enable-csrf=false (spring boot)
-
对不起,我没有运行 Spring Boot。我在 Tomcat 中运行应用程序。无论如何都是好建议
标签: spring web-applications spring-security