#angular
#angular
Вопрос:
Перехватчик —
export class AuthInterceptor implements HttpInterceptor {
constructor(private loaderService: LoaderService, private router: Router) { }
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
this.showLoader();
request = request.clone({
setHeaders: {
Authorization: `${localStorage.getItem('authToken')}`,
}
});
return next.handle(request).pipe(tap((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
this.hideLoader();
}
},
error => {
this.hideLoader();
if (error.status === 401) {
this.router.navigate(['../auth']);
}
}),
);
}
Обслуживание —
getList() {
return this.commonHttpService.get(`common/List`);
}
Вызов TS API —
List() {
this.Service.getList()
.subscribe((res: any) => {
this.Data = res.body.data;
});
}
Я хочу удалить авторизацию из заголовков запросов при вызове этого API.
Как мы можем это сделать? Искал много ответов на stackoverflow, но ничего не сработало. Может кто-нибудь, пожалуйста, помочь?
Ответ №1:
В перехватчике у вас может быть список URI, в которые вы не будете добавлять заголовок Auth.
if (unauthorizedUris.every(x => x !== request.url))
request.clone({
setHeaders: {
Authorization: `${localStorage.getItem('authToken')}`,
}});