Angular refresh token interceptors π
Three ways to refresh token with Angular Http Interceptor
- Brute force solution with
tokenRefreshed$
BehaviorSubject as a semaphore - Using
caught
parameter incatchError
rxjs operator to retry request failed request - Using
retryWhen
operator
Features
- β Refresh token only once for multiple requests
- β Log out user if refreshToken failed
- β Log out if user gets an error after first refreshing
- β
Queue all requests while token is being refreshed(except
BruteForceInterceptor
) - β Tests for all cases above
Usage
Add HttpInterceptor in providers
section of your AppModule
:
@NgModule({
imports: [
HttpClientModule
],
providers: [
AuthService,
{
provide: HTTP_INTERCEPTORS,
useClass: RetryWhenInterceptor,
multi: true
},
],
})
export class AuthModule { }