我的Angular App中有以下工厂。它用于通过$ resource将持有者令牌信息添加到我所有传出请求的标头中。它按预期工作。
但是我已经实现了一些外部呼叫,不应该使用承载令牌添加。我如何实施支票,以便我可以控制哪些电话被拦截而哪些不被拦截?
我的代码:
.factory('authInterceptor', [
"$q", "$window", "$location", "currentUser", function ($q, $window, $location, currentUser) {
return {
request: function(config) {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + currentUser.getProfile().token;
return config;
},
response: function(response) {
return response || $q.when(response);
},
responseError: function(rejection) {
// error handler
}
};
}
])
添加authInterceptor:
.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
}])
资源工厂:
myApp.factory('Random', function ($resource) {
return $resource('domain.com', { }, {
update: {
method: 'PUT'
}
});
});
调用资源:
Random.query({ });
有什么想法吗?
答案 0 :(得分:2)
有很多方法,例如,您可以在请求对象中执行某些操作,
.factory('authInterceptor', [
"$q", "$window", "$location", "currentUser", function ($q, $window, $location, currentUser) {
return {
request: function(config) {
if(config.url !== 'external url') {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + currentUser.getProfile().token;
}
return config;
},
response: function(response) {
return response || $q.when(response);
},
responseError: function(rejection) {
// error handler
}
};
}
])
使用该条件,您将跳过不需要的网址mod 查看文档, https://docs.angularjs.org/api/ng/service/ $ HTTP使用# 您甚至可以为所有呼叫创建一个密钥,用于打开/关闭拦截。