[英]Catch an error anywhere angularjs
我正在开发一个经常与服务器通信的Angularjs应用程序。 我以前从未有过实施安全性的任务。
这意味着,当用户尝试执行不允许执行的操作时,我已经更改了所有服务器端api调用,以返回403未经授权的http状态代码。
现在,我可以查找该应用程序对服务器进行的每个API调用,并调用一个函数,每个函数以相同的方式处理相同的错误。 但是,我宁愿找到某种方式说“只要该页面收到403未经授权的回复,就执行此功能”。 我要问的可能吗?
您可以使用$http
拦截器。 通过添加拦截器,您将能够拦截响应以检查状态代码,并在通知原始要求之前做您想做的任何事情。
例如:
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;
}
};
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.