2017-01-12 1 views
2

Как я могу предотвратить весь запрос $ http в угловом, если токен не разрешен. маркер сохраняется при входе в LocalStorage

Я ищу что-то вроде

app.config("$httpInterceptor", function(){ 
    var token = localStorage.getItem("token") 
    if (token == null){ 
//prevent all $http calls (get, post, put whatever calls) 
} 
}) 
+0

Создайте обертку/прокси-сервер в формате $ http и добавьте свою проверку там, в вашем переопределении сообщения, получения и т. Д. – Igor

ответ

0

вы можете перехватывать каждый запрос и cancell их, если маркер не установлен

angular.module('myModule', []) 
.config(function($httpProvider) { 
    $httpProvider.interceptors.push(function($q) { 
     var canceler = $q.defer(); 
     return { 
      'request': function(config) { 
       if(!window.localStorage.getItem('token')) { 
       config.timeout = canceler.promise; //cancelled       
       } 
      } 
     } 
    }); 
}) 
0

Вы можете отклонения до его начала

angular 
    .module('app', []) 
    .config(function ($httpProvider) { 
     $httpProvider.interceptors.push(function($q) { 
      return { 
       'request': function(config) { 
        if(!localStorage.getItem('token')) { 
         return $q.reject() 
        } else { 
         return config 
        } 
       } 
      } 

     }) 
    }) 
0

необходимо использовать примените понятие перехватчика.

app.factory('httpCanceller', ['$q', function($q) { 
    return { 
    'request': function(config) { 

     var canceler = $q.defer(); 
     var token = localStorage.getItem("token"); 

     config.timeout = canceler.promise; 

     if (!token) { 
      canceler.resolve(); 
     } 

     return config; 
    } 
    } 
}]); 


app.config('$httpProvider', function($httpProvider){ 
    httpProvider.interceptors.push('httpCanceller'); 
}); 
Смежные вопросы