【发布时间】:2015-08-25 17:05:54
【问题描述】:
我正在尝试使用本教程实现一个 Angular 应用程序:https://spring.io/guides/tutorials/spring-security-and-angular-js/
登录并执行后续的 HTTP 调用也可以。 Angular 成功附加了 CSRF 令牌,Spring 成功解析了它。假设令牌是foo,请求将包含以下标头:
Cookie:
JSESSIONID=...; XSRF-TOKEN=fooX-XSRF-TOKEN:
foo
现在,当尝试使用
$http.post('logout', {}),Angular 将使用完全相同的标头。但是,Spring 以 403 回答:
在请求参数“_csrf”或标头“X-CSRF-TOKEN”上发现无效的 CSRF 令牌“null”。
这是我的安全配置的样子:
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().and()
.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated().and()
.logout().and()
.addFilterBefore(new CsrfHeaderFilter(), CsrfFilter.class);
}
CsrfHeaderFilter 是 explained in the tutorial 类(显然适用于所有其他请求)。
【问题讨论】:
标签: java angularjs spring spring-mvc spring-security