最近我发现TokenHandler允许我在每个其他api请求上发送令牌。您可以在此处找到详细说明:http://nils-blum-oeste.net/angularjs-send-auth-token-with-every--request/#.UXtYlbVTDIX
我正面临在我的项目中实现此处理程序的问题。我的项目涉及几个资源,让我谈谈发布和作者。我目前正在做的是:
angular.module('PostService', ['ngResource']).factory(....
angular.module('AuthorService', ['ngResource']).factory(....
我将它包装在我的主app模块中
var app = angular.module('myApp', ['PostService', 'AuthorService']);
我的问题是,我在哪里设置TokenHandler?它必须分配给一个模块吗?我会把它分配到例如PostService但我不能在AuthorService中使用它吗?
因此,我有另一个问题。是否可以在一个服务中包装多个资源,如:
angular.module('RestService', ['ngResource']).factory(['Post', 'Author'],...
答案 0 :(得分: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;
}]);
您只需包装需要发送令牌的操作。 关于你的第二个问题,它不是一个好的编程实践,无论如何,工厂只返回一个对象。