Angular2: Fehler 401 beim Aktualisieren des Tokens abgefangen
Ich bin neu in Angular2 und versuche, den Fehler 401 für die Tokenaktualisierung abzufangen, mit dem Plan, die ursprüngliche Anforderung erneut zu versuchen ...
Hier ist meine authService.refresh-Methode:
refresh() : Observable<any> {
console.log("refreshing token");
this.accessToken = null;
let params : string = 'refresh_token=' + this.refreshToken + '&grant_type=refresh_token';
let headers = new Headers();
headers.append('Authorization', 'Basic ' + this.clientCredentials);
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return Observable.create(
observer => {
this._http.post('http://localhost:8080/oauth/token', params, {
headers : headers
})
.map(res => res.json()).subscribe(
(data) => {
this.accessToken = data.access_token;
observer.next(this.accessToken);
observer.complete();
},
(error) => {
Observable.throw(error);
}
);
});
}
und dann versuche ich, die Aktualisierungsfunktion in meiner Komponentenmethode zu verwenden:
update(index : number) {
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + this._authService.accessToken);
this._http.get('http://localhost:8080/rest/resource', {
headers : headers
})
.catch(initialError =>{
if (initialError && initialError.status === 401) {
this._authService.refresh().flatMap((data) => {
if ( this._authService.accessToken != null) {
// retry with new token
headers = new Headers();
headers.append('Authorization', 'Bearer ' + this._authService.accessToken);
return this._http.get('http://localhost:8080/rest/resource', { headers : headers });
} else {
return Observable.throw(initialError);
}
});
} else {
return Observable.throw(initialError);
}
})
.map(res => res.json())
.subscribe(
data => {
this.resources[index] = data;
},
error => {
console.log("error="+JSON.stringify(error));
}
);
}
Dies funktioniert aus irgendeinem Grund nicht ... Ich frage mich, was die korrekte Implementierung der Token-Aktualisierungsfunktion in angle2 ist.enter code here