我们基于Angular的webapp与企业门户集成,后者在不同的域和上下文路径上运行 . 我使用基于Spring Security的CSRF令牌来验证传入的请求 . 该应用程序完全在本地工作,但是当我将它与门户集成时,所有后置调用都失败了403因为Angular无法读取XSRF-Token并将请求头中的X-XSRF-Token设置为API调用 . 经过调查,我发现门户网站和我们的app的上下文路径是不同的,因此spring将XSRF-Token设置为Path,Expires和domain为Null . 有什么办法可以在Spring创建时将XSRF-Token设置为特定的cookie路径?
注意:我有一个替代解决方案来创建过滤器并从请求标头中读取cookie并使用我想要的路径在浏览器上删除新的cookie . 我正在寻找配置级别的解决方案 .
1 回答
在配置安全性(Java文件)中,可以添加:
并改变函数
configure(...)
,行:http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()...
同
http.csrf().csrfTokenRepository(this.getCsrfTokenRepository()).and()...
这允许有一个解决方案来个性化cookie的路径
XSRF-TOKEN
.