2013-07-22 86 views
2

你好,我正在做使用ngResource插件,我实现HMAC认证AngularJS一个REST API客户端。需要Authorization头与AngularJS ngResource拦截HTTP请求

我写的拦截HTTP请求,并计算与HMAC标志附加认证头的HttpIntercept服务。但是通过这个实现,它计算并将符号附加到所有请求中,这是不好的。

.factory('authInterceptor', function($q) { 
    return { 
     request: function(request) { 
       #sign calculation... 
       request.headers['Authorization'] = sign; 
      } 
      return request || $q.when(request); 
     } 
    }; 
}) 

.controller('HomeCtrl', function ($scope,$resource) { 
    var Articles = $resource('/api/articles'); 
    $scope.articles = Articles.query(); 
}) 

您是否有建议只拦截需要认证的请求或所有来自ngResource插件的请求?

我想三个workrounds: 1.私人请求的数组列表 2.不同的子域的公共和私有的API 3.连接电源HTTP头需要认证

+0

可以试着看看angularJS 1.2 – Atrix1987

回答

0

$http and overriding transformations和要求也$resource

每个$资源操作需要一个$ http.config像它有transformRequest对象:

var Articles = $resource(
    '/api/articles', 
    { 

    }, 
    { 
     'query': { 
      method: 'GET', 
      isArray: true, 
      transformRequest: function (config) { 
       config.headers['Authentication']: 'sign'; 
       return config; 
      } 
     } 
    });