2017-05-26 12 views
0

Promag(oidc-client-js)からSwagger-CodeGenで生成されたAPIコードにOAuth2アクセストークンを提供する方法を完全に理解できていません。OAuth2アクセストークンをtypescript-angular2クライアントに設定する

定数値を入力するのは簡単ですが、oidc-client-jsからユーザーのアクセストークンを取得するには、どのように変更しますか。私は "正しい"方法を知りたいです。このトークンを大域変数のどこかに張り付けるのは簡単です。 OnInitと、通常のコンポーネントで

@NgModule({ 
    imports: [ 
    CommonModule, 
    ApiModule.forConfig(() => new Configuration({ 
     accessToken: 'my-access-token' //this can also be a() => string function 
    })) 
    ], 

、私はoidc-、クライアントののUserManagerのインスタンスからの約束でトークンを取得することができます。これら二つの部分を合わせることは、私を混乱させる原因です。 1つは静的構成のように見え、もう1つはシングルトンの約束に加入する必要があります。

this.userSubscription = this.authService.getUser().subscribe((user) => { 
    if (user) { 
     this.access_token = user.access_token; 
    } 
}); 

私が間違っていることについての訂正も認められます。これはAngularを使用した私の最初のプロトタイプです。


更新

ベンの提案を適用し、(実験的にマークされ、非常にまばらにIMO文書化されている)APP_INITIALIZERを理解するための時間を取った後、それはやり過ぎのように感じました。私は威張っ-コード生成で生成された活字体-Angular2のサービスコードに注入されますConfigurationクラスのために、次のカスタムプロバイダで終了:

providers: [ 
    AuthService, 
    AuthGuardService, 
    { 
    provide: Configuration, 
    useFactory: (authSvc: AuthService) => new Configuration({accessToken: authSvc.getAccessToken.bind(authSvc)}), 
    deps: [AuthService], 
    multi: false 
    } 
] 

私は、サービス上のユーザーの最新access_tokenはを保存するために、私のAuthServiceを変更しました。 getAccessToken()メソッドはSwagger-CodeGen生成コードから呼び出され、HTTPヘッダーで使用する最新のjwtを返します。それはきれいに感じ、それは動作します。私の問題を解決するためにこれが間違った方法である場合は、私に知らせてください。

答えて

関連する問題