我正在开发一个经常与服务器通信的Angularjs应用程序。我的任务是实施安全性,之前没有。
这意味着当用户尝试执行不允许执行的操作时,我已经更改了所有服务器端api调用以返回403未授权的http状态代码。
现在,我可以去搜索应用程序向服务器发出的每个API调用,并调用一个在每个API中以相同方式处理相同错误的函数。但我宁愿找到一些方法来说“任何时候这个页面得到403未经授权的响应,执行此功能。”我问的可能吗?
答案 0 :(得分:0)
您可以使用$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;
}
};
});
});