javascript - Angular 2 XSRF策略

标签 javascript angular

我正在使用 Angular 2 v2.3.1(最新版本)。 我需要在请求 header 中发送到我的后端 X-CSRF-TOKEN。我在 Angular 2 文档上找到了一个解决方案:https://angular.io/docs/ts/latest/guide/security.html#!#http

我实现了自己的 XSRFStrategy:

export class IlmsCookieStrategy implements XSRFStrategy {

constructor(
    private cookieName: string = 'CSRF-TOKEN',
    private headerName: string = 'X-CSRF-TOKEN') { }

configureRequest(req: Request): void {
    console.log('Configure request');
    let token = __platform_browser_private__.getDOM().getCookie(this.cookieName);
    if (token && !req.headers.has(this.headerName)) {
      req.headers.set(this.headerName, token);
    }
}
}

我尝试将其加载到我的 main.ts 中:

platformBrowserDynamic().bootstrapModule(
    AppModule,
    [
        {
            provide: XSRFStrategy,
            useClass: IlmsCookieStrategy
        }
    ]

);

但是控制台日志没有显示,并且 header 没有添加到我的请求 header 中。怎么了?请帮助我

最佳答案

不要在 main.ts 中使用 Class,而是尝试使用“useValue”并实现您自己的 xsrfStrategy,如下所示:

import { HttpModule, XSRFStrategy, CookieXSRFStrategy, Http } from '@angular/http';

export function IlmsCookieStrategy(http: Http) {
  return new CookieXSRFStrategy('RESPONSE_TOKEN', 'X-CSRFToken');
}

在您的应用程序模块中使用它,如下所示:

providers: [
    { provide: XSRFStrategy, useValue: IlmsCookieStrategy}
],

希望这对您有用。

关于javascript - Angular 2 XSRF策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41565986/

相关文章:

javascript - geoJson 属性添加/更新

javascript - FileReader 从浏览器窗口拖动图像

javascript - JS 日期 : Add 0 in front of every single day or month

javascript - Angular 2 独立组件

javascript - jQuery getJSON 请求返回空响应 - 同一域

javascript - Webix UI 模式中的表单数据

javascript - Angular 无法绑定(bind)到 'dragula',因为它不是 'ul' 的已知属性

angular - RxJS 订阅未触发

angular - 如何在 Angular2 中分配动态路由器?

javascript - 在 XHR 请求中使用 try/catch 而不是 `.catch` 可观察运算符是否会降低性能?