नमस्ते मैं यह पता लगाने की कोशिश कर रहा हूं कि नए कोणीय इंटरसेप्टर्स को कैसे लागू किया जाए और 401 unauthorized
टोकन को रीफ्रेश करके और अनुरोध को पुनः प्राप्त करके त्रुटियों को संभालें । यह वह मार्गदर्शिका है जिसका मैं अनुसरण कर रहा हूं: https://ryanchenkie.com/angular-authentication-using-the-http-client-and-http-interceptors
मैं विफल अनुरोधों को सफलतापूर्वक कैशिंग कर रहा हूं और टोकन को रीफ्रेश कर सकता हूं, लेकिन मैं यह नहीं पता लगा सकता हूं कि पहले विफल हुए अनुरोधों को कैसे पुनः भेजें। मैं यह भी प्राप्त करना चाहता हूं कि मैं वर्तमान में उपयोग किए जा रहे रिज़ॉल्वर के साथ काम कर सकता हूं।
token.interceptor.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();
}
} );
}
}
} );
authentication.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
} );
}
उपरोक्त रिट्रीफ़ेलर-रीज़न () फ़ाइल वह है जो मैं समझ नहीं सकता। मैं अनुरोधों को कैसे पुन: प्रस्तुत कर सकता हूं और पुनः प्रयास करने के बाद उन्हें रिसॉल्वर के माध्यम से मार्ग पर उपलब्ध कराऊंगा?
अगर यह मदद करता है तो यह सब प्रासंगिक कोड है: https://gist.github.com/joshharms/00d8159900897dc5bed45757e30405f9