繁体   English   中英

在angularjs的任何地方捕获错误

[英]Catch an error anywhere angularjs

我正在开发一个经常与服务器通信的Angularjs应用程序。 我以前从未有过实施安全性的任务。

这意味着,当用户尝试执行不允许执行的操作时,我已经更改了所有服务器端api调用,以返回403未经授权的http状态代码。

现在,我可以查找该应用程序对服务器进行的每个API调用,并调用一个函数,每个函数以相同的方式处理相同的错误。 但是,我宁愿找到某种方式说“只要该页面收到403未经授权的回复,就执行此功能”。 我要问的可能吗?

您可以使用$http拦截器。 通过添加拦截器,您将能够拦截响应以检查状态代码,并在通知原始要求之前做您想做的任何事情。

AngularJS $ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM