[英]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.