您好我正在使用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附加到需要身份验证的请求
答案 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;
}
}
});