私の角2のアプリケーションでは、ヘッダーに トークンを挿入して各要求を認証する必要があります。私は要求ヘッダーを作成し、 トークンを挿入するサービスを持っています。問題は、トークンを取得するメソッドが非同期であることです。したがって、以下のコードでは、トークン をヘッダに挿入する前にhttp getを実行します。Anugalur2 - 要求ヘッダーに認証トークンを注入する
トークンが処理されるまでhttpを待つように強制する良い方法はありますか?
コード:
getData(query: Vehicle): Observable<ResultWrapper> {
this.spinnerService.show();
return this.http
.get(`${this.myService.apiEndpoint}/vehicles?name=${query.make}`,
{ headers: this.myService.getHeaders() })
.map(this.extractData)
.catch(this.exceptionService.catchBadResponse)
.finally(() => {
this.spinnerService.hide();
});
}
myServiceという:
getHeaders(): any {
// this is call to an asynchronous javascript method
this.config.getToken(function (responseData) {
if (!responseData.error) {
responseData.headers.append('Authorization', "Bearer " + responseData.token);
return responseData.headers;
});
}
どのようにabt HTTPインターセプタ? あなたの前にあなたのreqを傍受し、ヘッダーを加えて行きます。 あなたのトークンに関連するコードがそのように単一の場所にあります。 –
この記事では、インターセプタがAngular 2でサポートされていなかったというhttp://stackoverflow.com/questions/34464108/angular2-set-headers-for-every-requestについて述べました。また、httpクラスを拡張する例もありますが、ただし、認証呼び出しは依然として同期しています。 – noobie