【发布时间】:2020-08-18 17:29:05
【问题描述】:
我有以下具有 CSRF if/else 条件的课程。我从属性文件中读取了这个标志,我可以使用 /refresh 端点更改标志值。 :
@Order(-1)
@EnableWebSecurity
public class SomeConfigClass extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
String csrfFlag = somePropertyFile.getCsrfFlag();
if(isCsrfEnable){
http.csrf()....some other code
}else {
http.csrf().disable();
}
}
}
问题: 所以当我调试代码时,我知道这个类只在 Spring 容器启动时调用一次。之后 if 将不会被调用。因此,即使在将 CSRF 标志更改为 false 之后,打算关闭 CSRF 标志,也不会工作,并且 CSRF 检查将在那里。
为避免这种情况,我需要重新启动/重新暂存应用程序,以便容器从属性文件中获取新配置,这可能会导致应用程序停机。 谁能更好地解决这个问题?
目标: CSRF 禁用/启用标志应该被外部化。 可以切换标志并启用/禁用 CSRF,而无需重新启动/重新部署应用程序。
【问题讨论】:
标签: java spring spring-boot csrf