2016-03-23 2 views
0

У меня есть следующая фабрика в моем Угловом приложении. Он используется для добавления информации токена-носителя, в заголовок всего моего исходящего запроса с ресурсом $. Он работает так, как ожидалось.Перехватчик в угловом, только для некоторых вызовов?

Но я реализовал некоторые внешние вызовы, которые не следует добавлять с токеном-носителем. Как выполнить проверку, так что я могу контролировать, какие вызовы перехватываются, а какие нет?

Мой код:

.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'); 
}]) 

Factory для ресурса:

myApp.factory('Random', function ($resource) { 
    return $resource('domain.com', { }, { 
     update: { 
      method: 'PUT' 
     } 
    }); 
}); 

вызовов ресурс:

Random.query({ }); 

Любые идеи?

ответ

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 
        } 
       }; 
      } 
     ]) 

с этим условным, вы будете пропускать нежелательные URL-адрес моды.
также проверьте документ, https://docs.angularjs.org/api/ng/service/ $ http # use вы даже можете создать ключ для всех вызовов, который включает/выключает перехват.

Смежные вопросы