如何将依赖项传递给@auth0-angular-jwt?
How to pass dependencies to @auth0-angular-jwt?
所以...我正在迁移使用 HttpModule
和 angular2-jwt
库的 "old" 代码。
之前,我可以让 angular2-jwt
使用以下配置:
export function authHttpServiceFactory(
http: Http, options: RequestOptions, myService: MyService) {
return new AuthHttp(new AuthConfig({
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
tokenGetter: (() => myService.get('my_token'))
}), http, options);
}
@NgModule({
providers: [
{
provide: AuthHttp,
useFactory: authHttpServiceFactory,
deps: [Http, RequestOptions, MyService]
}
]
})
export class AuthModule {}
...但是现在,要将它与新的 HttpClientModule
一起使用,我必须使用 new 版本的 angular2-jwt
(@auth-angular-jwt - 我知道它仍处于 beta 版本)并且我试图弄清楚我需要做什么才能访问我的服务以获取令牌(就像我以前做的那样)。
我的实际配置是(与git的示例相同):
@NgModule({
// ...
imports: [
HttpClientModule,
JwtModule.forRoot({
config: {
tokenGetter: () => {
return <myService>.getToken(); // Here
}
}
})
]
})
export class AppModule {}
可能吗?提前致谢。
这可以通过覆盖配置服务来完成:
export const jwtOptionsFactory = (dependency) => ({
tokenGetter: () => dependency.getToken(),
whitelistedDomains: []
});
...
imports: [
JwtModule.forRoot({
config: { tokenGetter(): string { throw new Error('no tokenGetter') } }
})
],
providers: [{
provide: JWT_OPTIONS,
deps: [Dependency],
useFactory: jwtOptionsFactory
}]
从 1.0.0-beta.8 开始,forRoot
接受 options provider:
...
imports: [
JwtModule.forRoot({
jwtOptionsProvider: {
provide: JWT_OPTIONS,
deps: [Dependency],
useFactory: jwtOptionsFactory
}
})
]
所以...我正在迁移使用 HttpModule
和 angular2-jwt
库的 "old" 代码。
之前,我可以让 angular2-jwt
使用以下配置:
export function authHttpServiceFactory(
http: Http, options: RequestOptions, myService: MyService) {
return new AuthHttp(new AuthConfig({
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
tokenGetter: (() => myService.get('my_token'))
}), http, options);
}
@NgModule({
providers: [
{
provide: AuthHttp,
useFactory: authHttpServiceFactory,
deps: [Http, RequestOptions, MyService]
}
]
})
export class AuthModule {}
...但是现在,要将它与新的 HttpClientModule
一起使用,我必须使用 new 版本的 angular2-jwt
(@auth-angular-jwt - 我知道它仍处于 beta 版本)并且我试图弄清楚我需要做什么才能访问我的服务以获取令牌(就像我以前做的那样)。
我的实际配置是(与git的示例相同):
@NgModule({
// ...
imports: [
HttpClientModule,
JwtModule.forRoot({
config: {
tokenGetter: () => {
return <myService>.getToken(); // Here
}
}
})
]
})
export class AppModule {}
可能吗?提前致谢。
这可以通过覆盖配置服务来完成:
export const jwtOptionsFactory = (dependency) => ({
tokenGetter: () => dependency.getToken(),
whitelistedDomains: []
});
...
imports: [
JwtModule.forRoot({
config: { tokenGetter(): string { throw new Error('no tokenGetter') } }
})
],
providers: [{
provide: JWT_OPTIONS,
deps: [Dependency],
useFactory: jwtOptionsFactory
}]
从 1.0.0-beta.8 开始,forRoot
接受 options provider:
...
imports: [
JwtModule.forRoot({
jwtOptionsProvider: {
provide: JWT_OPTIONS,
deps: [Dependency],
useFactory: jwtOptionsFactory
}
})
]