gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:01:36 30 4
gpt4 key购买 nike

我有一个启用了 csrf 的 spring boot 应用程序,但现在我只想为本地主机禁用它。来自其他域的任何请求都必须通过 csrf 安全,但对于本地主机,我想禁用它。我怎样才能做到这一点?

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

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

上面的代码禁用了 csrf,但我想为唯一的本地主机禁用 csrf。

你能帮帮我吗?

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

最佳答案

您可以使用 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();
}
}

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

关于spring-boot - 如何仅在 localhost 的 spring security 中禁用 csrf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732000/

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