【问题标题】:How does angluar get csrf token from spring security? [closed]Angular 如何从 Spring Security 获取 csrf 令牌? [关闭]
【发布时间】:2019-12-19 02:23:34
【问题描述】:

我用 Angular 编写了一个登录屏幕。我希望能够登录到我的 Spring Boot 服务。如果没有 csrf 令牌,我将无法登录。 我是否应该为了获取 csrf 令牌而对 Spring Boot 服务进行不必要的调用?

【问题讨论】:

    标签: angular spring-boot spring-security


    【解决方案1】:

    csrf 登录 api 不需要令牌。您必须在您的登录 API 中排除它。

    登录成功后,您必须在响应中发送令牌,以便您的 Angular 应用程序将此令牌保存在 cookie 中。

    从下一个 api 开始,客户端应用程序必须在令牌中发送这个 csrf 令牌,以确保有正确的身份验证。

    angular应用的cookies中写入csrftoken后,就可以用傻逼的方式提取token了。

    将 HttpClientXsrfModule 导入您的 app.module.ts

    <!-- app.module.ts -->
    import { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
    
    imports:[...,HttpClientXsrfModule,...]
    

    HttpXsrfTokenExtractor 注入您的服务或HttpInterceptor 或您要在其中使用cookie 的文件。

    constructor(private cookieExtractor:HttpXsrfTokenExtractor){}
    

    获取cookie,例如xsrf token

    const xsrf: string = this.cookieExtractor.getToken();
    

    在标题中添加令牌

     if (xsrf) {
                request = request.clone({ headers: request.headers.set('x-xsrf-token', xsrf) });
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-07
      • 2014-04-26
      • 2014-10-26
      • 2012-03-06
      • 2020-10-28
      • 2019-07-20
      • 2015-05-10
      • 2015-08-25
      相关资源
      最近更新 更多