在angularjs

时间:2016-10-18 23:10:51

标签: javascript angularjs http

我正在开发一个经常与服务器通信的Angularjs应用程序。我的任务是实施安全性,之前没有。

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

现在,我可以去搜索应用程序向服务器发出的每个API调用,并调用一个在每个API中以相同方式处理相同错误的函数。但我宁愿找到一些方法来说“任何时候这个页面得到403未经授权的响应,执行此功能。”我问的可能吗?

1 个答案:

答案 0 :(得分:0)

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

Angularjs $http docs

例如:

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;
      }
    };
  });
});