Angular2 http 默认 headers 通用授权令牌

Angular2 http default headers common Authorization tokens

在 angular 1 中,我能够操纵 http object 因此 header 请求 post 包含如下身份验证:

$http.defaults.headers.common['Authorization'] = "Token " + sessionobject.token;

return $http({

    method: 'POST',
    url: SERVER_ENVIRONMENT + 'updatepath',
    headers: {
        'Content-Type': 'application/json',
        'Data-Type': 'json'
    },
    data: { 
        id : id,
        ...
    }
})

你能帮我找到 Angular 2 中生成相同 post 请求的 equvilant 吗?提前多谢

您扩展 Angular2 class BaseRequestOptions 为所有 Http 调用提供自定义 headers

class MyOptions extends BaseRequestOptions {
 header:Headers=new Header({
'Authorization': 'Bearer ' + localStorage.getItem('token')
 });
}

然后可以将此 class 覆盖插入 DI,以便为请求选项 http 选择 MyOptions

bootstrap(App, [HTTP_PROVIDERS, provide(RequestOptions, {useClass: MyOptions})]);

这种方法的问题是令牌应该在引导过程中可用,但大多数情况下并非如此。

另一种选择是创建自定义 http 服务。此处提供了一种此类实现 https://gist.github.com/chandermani/9166abe6e6608a31f471

正如 Chandermani 在他的问题中所说,您可以为请求指定您自己的选项。您可以通过覆盖 merge 方法来静态或更动态地定义事物。使用后者,您可以根据为当前请求提供的选项扩展请求选项。

有关详细信息,请查看此问题:

由于您使用令牌,一个重要的特点是它们会在一段时间后过期。这意味着您需要根据刷新令牌来刷新它们。这可以在 Angular2 中通过扩展 Http class 并利用像 flatMap.

这样的可观察运算符来透明地完成。

有关详细信息,请查看此问题: