0

最近我发现了一个TokenHandler,它允许我在每个 rest api 请求上发送一个令牌。您可以在此处找到详细说明:http: //nils-blum-oeste.net/angularjs-send-auth-token-with-every--request/#.UXtYlbVTDIX

我在我的项目中实现此处理程序时遇到问题。我的项目正在处理一些资源,让我谈谈PostAuthor。我目前正在做的是:

angular.module('PostService', ['ngResource']).factory(....
angular.module('AuthorService', ['ngResource']).factory(....

我将它包装在我的主应用程序模块中

var app = angular.module('myApp', ['PostService', 'AuthorService']);

我的问题是,我在哪里设置 TokenHandler?它必须分配给一个模块,对吗?我会将它分配给例如 PostService,但结果我将无法在 AuthorService 中使用它?

因此,我还有另一个问题。是否可以将多个资源包装在一项服务中,例如:

angular.module('RestService', ['ngResource']).factory(['Post', 'Author'],...
4

1 回答 1

2

只需遵循引用文章中的指南,声明TokenHandler服务:

angular.module('TokenHandler').factory('TokenHandler', function() {...

并配置您需要通过以下方式分配令牌的每个服务:

angular.module('AService', ['ngResource', 'TokenHandler']).factory('AService', ['$resource', 'TokenHandler', function($resource, tokenHandler) {
    var resource = $resource("http://...", {
        ...
    }, {
        get: {
            method:'GET', 
            params:{
                action:'get'
            }, 
            isArray:false
        },
        ...
    });

    resource = tokenHandler.wrapActions( resource, ["get", ...] );

    return resource;
}]);

您只包装需要发送令牌的操作。至于你的第二个问题,这不是一个好的编程习惯,无论如何,工厂只返回一个对象。

于 2013-04-27T06:00:41.073 回答