2016-10-18 4 views
0

Я работаю над приложением Angularjs, которое часто общается с сервером. Мне было поручено реализовать безопасность, когда раньше не было.Поймать ошибку где угодно angularjs

Это означает, что я изменил все вызовы api на стороне сервера, чтобы вернуть 403-несанкционированный код статуса http, когда пользователь пытается выполнить действие, которое им не разрешено выполнять.

Теперь я МОЖЕТ пойти и выследить каждый вызов API, который приложение делает на сервере, и вызвать функцию, которая обрабатывает одну и ту же ошибку одинаково в каждом из них. Но я бы скорее нашел способ сказать: «Всякий раз, когда эта страница получает 403-несанкционированный ответ, выполняйте эту функцию». Это то, что я прошу?

+0

да, вы можете использовать $ HTTP Перехватчик перехватывать каждый HTTP вызов и иметь дело с 403s там – theTaoOfJS

+0

@theTaoOfJS Вы должны сделать это ответ. –

ответ

0

Вы можете использовать перехватчики $http. Добавляя перехватчик, вы сможете перехватить ответ, чтобы проверить код состояния и делать все, что хотите, до того, как требуется уведомление об уведомлении.

Angularjs $http docs

Например:

app.config(function ($httpProvider) { 
    // it can be added by a explicit factory declaration 
    // angular.module(...).factory('myHttpInterceptor', function ... 
    $httpProvider.interceptors.push(function($q, $state) { 
    return { 
     'request': function(config) { 
     return config; 
     }, 

     'response': function(response) { 
     if(response.statusCode === 403){ 
      $state.go('my.unauthorized.state'); 
      // or maybe 
      // $rootScope.$broadcast('unauthorized'); 
     } 
     return response; 
     } 
    }; 
    }); 
}); 
Смежные вопросы