我有一个工作的春季启动应用程序,其中启用了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 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();
}
}
根据您正在执行的安全配置,您可以执行相反的操作并默认激活本地配置文件,这将执行禁用。