SpringBoot - Angular 5 - CSRF

我现在失去了,需要一些帮助 .

我有一个

带有SpringSecurtiy 4.3的

  • SpringBoot服务器 .

  • Angular 5 App

并且想要启用CSRF保护,因为默认情况下应该启用它(文档说):它不是!

在SpringBoot上,我需要添加这些安全配置:

http
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());

在Angular上我需要添加这些模块:

imports: [
    ...,
    HttpClientModule,
    HttpClientXsrfModule, //(!)
...

在底线,服务器在每个响应中发送XRSF-TOKEN .

  • 但每个人都不同 . 那是对的吗?我希望在客户端会话上是一样的 .

  • 这里的主要问题是Angular5在其后调用中仍然没有使用XRSF-TOKEN(例如) . 它没有在其请求中设置X-XSRF-TOKEN .

我做错了什么或错过了什么?

回答(1)

3 years ago

我有同样的问题,我认为这是由于角度版本5的回归 .

在修复此问题之前,您可以像我一样添加自己的“X-XSRF-TOKEN” Headers .

constructor(private http: HttpClient, private tokenExtractor: HttpXsrfTokenExtractor) {
    }

然后手动提取令牌

const token = this.tokenExtractor.getToken() as string;

并将其添加到 Headers 中

this.http.post<any>(url, body, {headers: new HttpHeaders().set('X-XSRF-TOKEN', token)})

Houssem