我想拦截资源调用中的请求。我的拦截器的目的是拦截发送到服务器的所有请求的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。是否有可能以角度拦截$资源或我必须使用$ http?
答案 0 :(得分:0)
现在这就是我的做法,
当我需要一个通用标题时,表示我想在每个请求中使用的标题然后我像这样配置我的标题
$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
设置为transformRequest
$resource
return $resource(gwService.getResourceUrl('/environments/:environmentId'), null,
{
'update': {method: 'PUT'},
'query': {method: 'GET', transformRequest: APIAuthroization.transformRequest}
}
);
};