使用AngularJS ngResource拦截需要授权标头的HTTP请求

时间:2013-07-22 16:36:08

标签: api rest authentication angularjs hmac

您好我正在使用ngResource插件和我的HMAC身份验证实现使用AngularJS做REST API客户端。

我编写了一个HttpIntercept服务,它拦截了http请求,并计算并附加了具有HMAC标志的授权标头。但是通过这个实现,它会计算并将符号附加到所有请求,这很糟糕。

.factory('authInterceptor', function($q) {
    return {
        request: function(request) {
                #sign calculation...
                request.headers['Authorization'] = sign;
            }
            return request || $q.when(request);
        }
    };
})

.controller('HomeCtrl', function ($scope,$resource) {
    var Articles = $resource('/api/articles');
    $scope.articles = Articles.query();
})

您是否有建议仅拦截需要身份验证的请求或来自ngResource插件的所有请求?

我想到了三个工作场所: 1.私有请求的数组列表 2.公共和私有API的不同子域 3.将http Header附加到需要身份验证的请求

1 个答案:

答案 0 :(得分:0)

请参阅$http and overriding transformations以及$resource

每个$ resource操作都需要一个$ http.config之类的对象,它有transformRequest:

var Articles = $resource(
    '/api/articles',
    {

    },
    {
        'query': { 
            method: 'GET', 
            isArray: true,
            transformRequest: function (config) {
                config.headers['Authentication']: 'sign';
                return config;
            }
        }
    });