我正在使用旧版Spring MVC应用程序,需要将_csrf令牌传递给javascript,但是在引入spring-security(尤其是auth0用户身份验证)之后,这两行始终为空:
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
这就是我重写configure(HttpSecurity http)的方式:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@PropertySources(@PropertySource("classpath:auth0.properties"))
@Order(-2 /* SecurityProperties.ACCESS_OVERRIDE_ORDER */)
public class AppConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/download/**", "/resources/**", "/plugins/**", "/js/**", "/css/**", "/colors/**", "/callback", "/login", "/loggedout").permitAll()
.antMatchers("/**").authenticated()
.and()
.logout().permitAll();
}
}
我已经从web.xml中删除了 DelegationgFilterProxy ,因为应该通过扩展 WebSecurityConfigurerAdapter 和根据这个${_csrf.parameterName} and ${_csrf.token} return null这样的问题,我应该重新添加,但是,如果这样做,则会出现启动错误(缺少springSecurityFilterChain)。
所以,问题是,如果实现了WebSecurityConfigurerAdapter并且不禁用csrf,为什么我的令牌为null?