Salut, je suis à essayer de comprendre comment mettre en œuvre la nouvelle angulaire d'intercepteurs et de manipuler 401 unauthorized
des erreurs par l'actualisation de la symbolique et de la nouvelle tentative de la demande. C'est le guide que j'ai suivi: https://ryanchenkie.com/angular-authentication-using-the-http-client-and-http-interceptors
Je suis avec succès la mise en cache l'échec de la demande et peut actualiser le jeton mais je ne peux pas comprendre comment renvoyer les demandes que précédemment échoué. Je tiens également à obtenir que cela fonctionne avec les outils de résolution que j'utilise actuellement.
jeton.l'intercepteur.ts
return next.handle( request ).do(( event: HttpEvent<any> ) => {
if ( event instanceof HttpResponse ) {
// do stuff with response if you want
}
}, ( err: any ) => {
if ( err instanceof HttpErrorResponse ) {
if ( err.status === 401 ) {
console.log( err );
this.auth.collectFailedRequest( request );
this.auth.refreshToken().subscribe( resp => {
if ( !resp ) {
console.log( "Invalid" );
} else {
this.auth.retryFailedRequests();
}
} );
}
}
} );
l'authentification.service.ts
cachedRequests: Array<HttpRequest<any>> = [];
public collectFailedRequest ( request ): void {
this.cachedRequests.push( request );
}
public retryFailedRequests (): void {
// retry the requests. this method can
// be called after the token is refreshed
this.cachedRequests.forEach( request => {
request = request.clone( {
setHeaders: {
Accept: 'application/json',
'Content-Type': 'application/json',
Authorization: `Bearer ${ this.getToken() }`
}
} );
//??What to do here
} );
}
Le ci-dessus retryFailedRequests() du fichier est ce que je ne peux pas comprendre. Comment puis-je renvoyer les demandes et de les rendre disponibles à la route par le résolveur après une nouvelle tentative?
C'est tout le code si ça peut aider: https://gist.github.com/joshharms/00d8159900897dc5bed45757e30405f9