攔截器是服務工廠,它們通過將它們添加到$ httpProvider.interceptors數組而註冊到 $ httpProvider。 工廠被調用並且具有依賴注射(如果指定) 並返回攔截。
背後截擊的基本思路是,將每個$ HTTP請求之前被調用,您可以使用服務來檢查,如果用戶登錄並添加標記或其他任何需要被添加到在header.You還可以添加一些邏輯爲每個$ HTTP請求響應,像處理基於狀態碼的響應。
這裏是你如何使用它的角添加訪問令牌爲每個HTTP請求。
angular.module('myapp')
.run(['$rootScope', '$injector', function($rootScope,$injector) {
$injector.get("$http").defaults.transformRequest = function(data, headersGetter) {
if (sessionService.isLogged()) {
headersGetter()['Authorization'] = "Bearer " + sessionService.getAccessToken();
}
if (data) {
return angular.toJson(data);
}
};
});
這裏是你如何使用響應截擊:
angular.module('myapp')
.factory('authHttpResponseInterceptor', function($q, $location, sessionService, $http) {
return {
response: function(response) {
//some logic here
return response || $q.when(response);
},
responseError: function(rejection) {
if (rejection.status === 401) {
//some logic here
}
return $q.reject(rejection);
}
}
});