2

您好,我正在使用 ngResource 插件和我的 HMAC 身份验证实现使用 AngularJS 做一个 REST API 客户端。

我编写了一个 HttpIntercept 服务,它拦截 http 请求并计算并附加带有 HMAC 符号的授权标头。但是通过这种实现,它会计算符号并将其附加到所有请求,这很糟糕。

.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 插件的所有请求?

我想到了三个解决方法: 1. 私有请求的数组列表 2. 公共和私有 API 的不同子域 3. 将供应 http 标头附加到需要身份验证的请求

4

1 回答 1

0

请参阅$http 和覆盖转换以及$resource

每个 $resource 操作都需要一个类似 $http.config 的对象,该对象具有 transformRequest:

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

    },
    {
        'query': { 
            method: 'GET', 
            isArray: true,
            transformRequest: function (config) {
                config.headers['Authentication']: 'sign';
                return config;
            }
        }
    });
于 2017-05-17T08:24:02.040 回答