【问题标题】:How to add interceptor to $resource in angular如何在角度中将拦截器添加到 $resource
【发布时间】:2015-09-16 10:52:03
【问题描述】:

我想拦截资源调用中的请求。我的拦截器的目的是拦截发送到服务器的所有请求的 http 请求和授权标头。这是我的拦截器:

module.exports = function (authToken) {
return {
    request: function(config){
        var token = authToken.getToken();
        if(token){
            config.headers.Authorization = 'Bearer ' + token;
        }

        console.log(config);
        return config;
    },
    response: function(response){
        return response;
    }
}
};

作为配置函数的一部分,我正在推送 authInterceptor:

$httpProvider.interceptors.push('authInterceptor');

我还将拦截器定义为 $resource 参数:

module.exports = function ($resource, gwService, authInterceptor) {

return $resource(gwService.getResourceUrl('/environments/:environmentId'), null,
    {
        'update': {method: 'PUT'},
        'query': {method: 'GET', interceptor: authInterceptor}
    }
);
};

我无法弄清楚为什么 authInterceptor 永远不会被执行。是否可以以角度拦截 $resource 或者我必须使用 $http?

【问题讨论】:

  • 你不需要在$resource中传递拦截器
  • 还是一样 :) 问题是 Authorization 标头从未添加到 http 请求中

标签: angularjs interceptor angular-resource


【解决方案1】:

现在我就是这样做的,

当我需要一个通用的标头时,意味着我想在每个请求中使用一个标头,然后我像这样配置我的标头

$http.defaults.headers.post.Authorization = "Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ==";

但是当我想要每个请求的标头时,意味着我应该能够决定哪个请求将涉及授权标头,哪些没有标头,然后我会做这样的事情。

 .factory('APIAuthroization', function (authToken) {
     return {
         transformRequest: function (data, headersGetter) {
             var headers = headersGetter();
             var token = authToken.getToken();
             if (token) {
                 headers.Authorization = 'Bearer ' + token;
             }
             return JSON.stringify(data);
         }
     }
 })

然后将此transformRequest 设置为$resourcetransformRequest

return $resource(gwService.getResourceUrl('/environments/:environmentId'), null,
    {
        'update': {method: 'PUT'},
        'query': {method: 'GET', transformRequest: APIAuthroization.transformRequest}
    }
);
};

【讨论】:

  • 我正在测试你的方法。调用了 transformRequest 但请求中的标头永远不会更改。我正在使用 Angular 1.2.28 版本
猜你喜欢
  • 2014-06-07
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多