我想通过设置 活动应用程序.propertiesfalse
文件中的属性来禁用 CSRF 安全性。security.enable-csrf
根据官方文档,默认情况下启用此安全性。要禁用它,您必须在org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter#configure(org.springframework.security.config.annotation.web.builders.HttpSecurity)
with中指定它
http.csrf().disable();
或 xml 配置中的等效项。
预期行为该变量被 Spring Boot 视为公共属性security.enable-csrf
之一,但将其设置为 false 并不能解决任何问题。
在我的application.yml中我有这个部分
---
spring:
profiles: dev
security.enable-csrf: false
但将配置文件设置为dev
不会禁用 CRSF 安全性
我在用spring-security-config-4.2.2.RELEASE
我通过在我的实现中指定WebSecurityConfigurerAdapter
以下代码轻松解决了这个问题:
@Order(FRONTEND_SECURITY_ORDER)
@EnableAspectJAutoProxy
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
public static final int FRONTEND_SECURITY_ORDER
= SecurityProperties.ACCESS_OVERRIDE_ORDER + 3;
@Value("${security.enable-csrf}")
private boolean csrfEnabled;
@Override
protected void configure(HttpSecurity http) throws Exception {
if (!csrfEnabled) {
http.csrf().disable();
}
http
.httpBasic()
//..... etc
}
}
security.enable-csrf
如果该属性设置为 ,这将禁用 csrf 安全性false
。可以使用等效的方法来解决。