如果未解析令牌,我怎么能以角度阻止所有$ http请求。 令牌存储在localStorage
的登录名中我正在寻找像
这样的东西app.config("$httpInterceptor", function(){
var token = localStorage.getItem("token")
if (token == null){
//prevent all $http calls (get, post, put whatever calls)
}
})
答案 0 :(得分:0)
如果未设置令牌,您可以拦截每个请求并取消它们
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
}
}
}
});
})
答案 1 :(得分: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
}
}
}
})
})
答案 2 :(得分: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');
});