本文介绍了Angularjs - 处理401对整个应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的控制器之一以下code处理401优雅:
ChannelsService.query(功能(响应){
$ scope.channels =响应;
},功能(错误){
如果(error.status == 401){
$ state.go('登录');
}});
和我相应的服务
:
myServices.factory('ChannelsService',函数($资源){
返回$资源('/通道',{},{
查询:{方法:GET,IsArray的:真正},
创建:{方法:POST}
})
});
我想知道如何处理401的全局,使我没有这个逻辑工作到每个控制器。难道我需要和一个拦截器如果是的话可能会有人分享一些code?
感谢
解决方案
You can add an interceptor to the $httpProvider when configuring your application
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function($q) {
return {
'responseError': function(rejection){
var defer = $q.defer();
if(rejection.status == 401){
console.dir(rejection);
}
defer.reject(rejection);
return defer.promise;
}
};
});
}]);
As the name already suggests, this will intercept each request and call the provided function if there is a responseError
(You could add interceptors for succeeded requests, too)
For further information, see the $http docs
这篇关于Angularjs - 处理401对整个应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!