gpt4 book ai didi

java - 如何使用 application.properties 在 Spring 中禁用 csrf?

转载 作者:IT老高 更新时间:2023-10-28 13:59:28 25 4
gpt4 key购买 nike

存在以下属性:

security.enable-csrf=false

但如果我将属性添加到 application.properties,csrf 保护仍然开启。

有效的方法是以编程方式禁用它。

但我更喜欢属性配置。为什么它不能工作?

@Configuration
public class AuthConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}

@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.csrf().disable();

}
}

最佳答案

由于 WebSecurityConfigurerAdapter 使用命令式方法,您可以注入(inject) security.enable-csrf 变量的值并在其为 false 时禁用 CSRF。你是对的,我认为这应该开箱即用。

@Configuration
public class AuthConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;

@Value("${security.enable-csrf}")
private boolean csrfEnabled;

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}

@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);

if(!csrfEnabled)
{
http.csrf().disable();
}
}
}

当我有一个 dev spring 配置文件处于 Activity 状态时,我所做的是在我的 application.yml 中将该变量设置为 false,尽管您可以创建一个名为 nosecurity 的配置文件也用于此类目的。它大大简化了这个过程:

--- application.yml ---

# Production configuration
server:
port: ${server.web.port}
admin.email: ${admin.email}
#etc
---
spring:
profiles: dev

security.enable-csrf: false

#other Development configurations

希望能满足你的需求

2017 年 12 月 17 日更新

基于 comment of a Spring Boot member此问题已在新版本的 Spring 上得到修复:我在版本 1.5.2.RELEASE 上拥有它,但似乎在版本 1.5.9.RELEASE 中(版本 2 之前的最新稳定版本)它已经修复,默认情况下 csrf 是禁用的,可以使用 security.enable_csrf: true 启用它。因此,一个可能的解决方案可能只是升级到版本 1.5.9.RELEASE,然后再将主要版本升级到架构可能更加不同的版本 2。

关于java - 如何使用 application.properties 在 Spring 中禁用 csrf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com