【发布时间】:2017-12-03 02:39:16
【问题描述】:
存在以下属性:
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();
}
}
【问题讨论】:
-
只有在允许 Spring Boot 配置安全性的情况下才有效,如果您自己在搞乱安全性,该属性将不会做任何事情。还要确保您使用的是支持该属性的 Spring Boot 版本。
-
我在最新的
-1.5.4上,我只添加了configure()方法来禁用csrf。如果我完全删除该方法,该属性仍然不会被考虑在内。唯一的自定义安全配置是我用来设置BCryptPasswordEncoder的configure(AuthenticationManagerBuilder auth)。但这不应该影响 csrf。 -
这取决于,如果你有
@EnableWebMvc它会禁用自动配置。 -
@SpringBootApplication是我唯一的注释。我正在扩展WebSecurityConfigurerAdapter。也许这就是原因? -
你在使用 Spring Boot 吗?因为你的问题并不清楚......
标签: java spring spring-mvc spring-boot spring-security