我使用ng-flow通过servlet上传文件,但是当我保护servlet时,我意识到我需要将令牌传递到头文件,这样它才能工作并且安全。问题是ng-flow的设置是在.config框内的提供者上声明的。正如我所学到的那样,你不能在.config上注入东西,因为注入是在配置之后创建的。
angular.module('UploadModule', [ 'ngResource','flow' ,'AuthModule']).config(
[ 'flowFactoryProvider',function(flowFactoryProvider,$provide) {
//AuthService.getKeycloak();
flowFactoryProvider.defaults = {
target : '/ng-flow-java/upload',
permanentErrors : [ 500, 501 ],
maxChunkRetries : 1,
chunkRetryInterval : 5000,
simultaneousUploads : 4,
progressCallbacksInterval : 1,
withCredentials : true,
method : "octet",
headers : {'Authorization', 'Bearer + ' token}
};
flowFactoryProvider.on('catchAll', function(event) {
console.log('catchAll', arguments);
});
// Can be used with different implementations of Flow.js
// flowFactoryProvider.factory = fustyFlowFactory;
} ]);我对angular真的很陌生,所以我正在寻找一种重新组装这段代码的方法,这样我就可以添加来自我的用户的令牌。
谢谢
发布于 2015-06-25 01:34:17
我想我不明白到底是什么问题,但是:
实际上,每个角度服务x都有一个提供程序函数。此函数是一个构造函数,将由angular实例化,其结果可在名为xProvider的配置块中注入。这个对象应该有一个特殊的$get函数,它实际上是服务的工厂,这意味着当它第一次被注入到一些控制器、指令等中时,它将被调用来获取服务的单个实例。因此,您应该将angular服务看作如下所示的函数:
function SomeServiceProvider(){
this.$get = function SomeServiceFactory(){
}
this.someConfigurerFunction(){
}
}注册到provider接口:
someModule.provider("someService", SomeServiceProvider);angular将在内部执行类似new SomeServiceProvider()的代码,并将其保存在名为someServiceProvider的配置块中,并使其可注入。此外,当您第一次在指令、控制器等中请求"someService“时,注入器将调用类似new someServiceProvider.$get()的内容,将其结果返回给您,并将其保存在注册表中以供进一步注入。
当您使用其他更高级的angular模块API时,如factory或service,如下所示:
someModule.factory("anotherService", function AnotherServiceFactory(){
// code for creating service
});provider函数是为您生成的,只有一个$get函数,所以您看不到provider函数,但仍然有一个用于您的服务的provider函数,如下所示:
function AnotherServiceProvider(){
this.$get = AnotherServiceFactory;
}它被用作构造函数来实例化可注入到配置块中的anotherServiceProvider。
您可以在angular documentations for $provide和angular documentations for module API中找到有关angular服务的详细信息
附注:
decorators截获服务的创建,并使服务按您希望的方式工作。new ...)不完全一样,但它不会改变这里描述的概念。https://stackoverflow.com/questions/31032689
复制相似问题