Как передать зависимости в @auth0-angular-jwt?

Итак... я переношу свой "старый" код, который использовал HttpModule а также angular2-jwt Lib.

Раньше я мог сделать 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 Я должен использовать новую версию angular2-jwt ( @ auth-angular-jwt - я знаю, что это все еще в бета- версии), и я пытаюсь выяснить, что мне нужно сделать, чтобы получить доступ к своему сервису, чтобы получить токен (как я обычно делал).

Моя фактическая конфигурация (такая же, как в примере с git):

@NgModule({
  // ...
  imports: [
    HttpClientModule,
    JwtModule.forRoot({
      config: {
        tokenGetter: () => {
          return <myService>.getToken(); // Here
        }
      }
    })
  ]
})
export class AppModule {}

Является ли это возможным? Заранее спасибо.

1 ответ

Решение

Это может быть сделано путем переопределения службы конфигурации:

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-бета.8, forRoot принимает параметры провайдера:

...
imports: [
    JwtModule.forRoot({
        jwtOptionsProvider: {
            provide: JWT_OPTIONS,
            deps: [Dependency],
            useFactory: jwtOptionsFactory
        }
    })
]
Другие вопросы по тегам