Ваш ApiInterceptor
выглядит так, как будто он добавляет токен на предъявителя к запросу. Я бы назвал это TokenInterceptor
или аналогичным, и создал бы новый для обработки неавторизованных запросов.
Я бы создал новый перехватчик и назвал бы это UnauthorisedRequestInterceptor
. Нечто похожее на это:
@Injectable({ providedIn: 'root' })
export class UnauthorisedRequestInterceptor implements HttpInterceptor {
constructor(private router: Router) { }
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
return next.handle(req).pipe(
map(event => {
return event;
}),
catchError((error: HttpErrorResponse) => {
if (error.status === 401) {
this.router.navigate(['/auth/login']);
}
return throwError(error);
})
);
}
}
Это будет перехватывать каждый http-запрос, и если возвращенный статус 401, он перенаправит вас на вашу страницу входа в систему.
Затем добавьте это в список поставщиков в app.module.ts
:
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: UnauthorisedRequestInterceptor,
multi: true
}
]
Что касается перенаправления пользователей на доступ к защищенному маршруту, это должно быть сделано в вашей аутентификации.