如何仅在localhost中禁用spring security中的csrf?

问题描述 投票:0回答:1

我有一个工作的春季启动应用程序,其中启用了csrf但现在我想只为localhost禁用它。来自其他域的任何请求都必须通过csrf安全性,但对于localhost,我想禁用它。我怎么能实现这一目标?

我知道如何通过改变来禁用它

@Configuration
@EnableWebMvcSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf.disable();
    }
}

上面的代码禁用了csrf,但是我想为唯一的localhost禁用csrf。

你能帮我么?

编辑:我知道如何通过两个配置文件来做到这一点。谢谢@daren的详细解答。

spring-boot spring-security csrf
1个回答
1
投票

您可以使用Spring Profiles来实现您的目标。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

最简单的你可以有两种配置

@Configuration
@EnableWebMvcSecurity
@Profile("!deployed") //Not(!) deployed profile
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf.disable();
    }
}

在部署地区积极开展deployed概况。

@Configuration
@EnableWebMvcSecurity
@Profile("deployed")
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf.enable();
    }
}

根据您正在执行的安全配置,您可以执行相反的操作并默认激活本地配置文件,这将执行禁用。

© www.soinside.com 2019 - 2024. All rights reserved.