如果在使用 Angular 拦截器时,登录突然失败,这可能与拦截器的配置有关。以下是一些可能解决此问题的示例方法:
HttpInterceptor,则必须在最后使用 next.handle(request)。例如:@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private authService: AuthService) {}
intercept(request: HttpRequest, next: HttpHandler): Observable> {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${this.authService.getToken()}`
}
});
return next.handle(request);
}
}
Content-Type: application/json 头,则你的拦截器可能需要像这样设置:@Injectable()
export class ContentTypeInterceptor implements HttpInterceptor {
constructor() {}
intercept(request: HttpRequest, next: HttpHandler): Observable> {
request = request.clone({
setHeaders: {
'Content-Type': 'application/json'
}
});
return next.handle(request);
}
}
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private authService: AuthService) {}
intercept(request: HttpRequest, next: HttpHandler): Observable> {
const accessToken = this.authService.getAccessToken();
if (accessToken) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${accessToken}`
}
});
}
return next.handle(request).pipe(
catchError((error: HttpErrorResponse) => {
if (error.status === 401) {
this.authService.logout();
}
return throwError(error);
})
);
}
}
希望这些示例能够帮助你解决 Angular