直接上代碼:
angular.module('webb-ui').factory('authInterceptor', ['$q','$rootScope','$location','$injector','$timeout',function ($q,$scope,$location,$injector,$timeout) { function isNotPRiv(url){ return url.indexOf("/priv/") === -1 } var authInterceptor = { 'request': function(config) { var deferred = $q.defer(); var url = config.url; deferred.resolve(config); return deferred.promise; }, 'response':function(response){ return response; }, 'responseError': function(rejection) { var rootScope = $injector.get('$rootScope'); if(isNotPriv(rejection.config.url)){ var status = rejection.status; if(status === 403){ $scope.four_zero_th = true;//自己的業務邏輯處理代碼 rootScope.selectEtl(); return rejection; }else if(status === 401) { $scope.four_zero_one = true; rootScope.selectEtl(); return rejection; } } return $q.reject(rejection); } }; return authInterceptor;}]);說明:responseError 此例子主要是對請求異常進行統一的攔截處理。angular.module('webb-ui').config(['$stateProvider', '$urlRouterProvider', '$httpProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider) { $httpProvider.interceptors.push('authInterceptor'); /* *這里刪除一個$injector,解決不能獲取code碼的問題。 * */ //$httpProvider.interceptors.pop();}]);
新聞熱點
疑難解答