Olá Estou desenvolvendo uma aplicação angular e fiz um interceptor para enviar requisições e receber do back end. Quando o token expira e retorna o erro 401 do back-end, o interceptor apresenta dois problemas
1 - O interceptor não pega o erro 401, e sim ele identifica como error.status o valor 0.
2 - Ao pegar o erro ele faz o logout removendo o token expirado do local storage, porém não faz o redirecionamento para a página de login.
Se alguém souber ou tiver alguma ideia do que posso ser, agradeço.
Segue abaixo o código do interceptor:
@Injectable()
export class RequestInterceptor implements HttpInterceptor{
constructor(private tokenSerice: TokenService,
private usuarioService: UsuarioService,
private router: Router){}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if(this.tokenSerice.hasToken()){
const token = 'Bearer ' + this.tokenSerice.getToken();
req = req.clone({
setHeaders:{
'Authorization': token,
},
})
}
return next.handle(req).pipe(catchError(error => {
error instanceof HttpResponse
if(error.status === 401){
this.usuarioService.logout();
this.router.navigate(['']);
}else{
return throwError(error.message);
}
}))
}
}