I wrote an Angular4 http interceptor. It works fine for the request and for non error responses. But I'm not able to intercept an 401 for instance, the interceptor isn't even triggered. Does someone have an idea how to intercept an 401, for instance to forward to the login page?
Here is my code:
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/do';
import { PersistenceService, StorageType, IPersistenceContainer } from 'angular-persistence';
import { Router } from '@angular/router';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
storageContainer: IPersistenceContainer
constructor (
public persistenceService: PersistenceService,
public router: Router
) {
this.storageContainer = persistenceService.createContainer(
'org.ptnc.auth',
{type: StorageType.SESSION, oneUse: false}
)
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
req = req.clone({
setHeaders: {
Authorization: 'Bearer ' + this.storageContainer.get('jwt')
}
})
return next.handle(req)
.do(event => {
if(event instanceof HttpResponse ){
console.log('intercepts the response', event)
// this.router.navigate(['/auth/login'])
}
if(event instanceof HttpErrorResponse){
console.log('the real error')
}
})
}
}
.catch.