即使使用拦截器,Angular 仍然在控制台上输出 401 错误

问题描述 投票:0回答:1

这三个方法定义了我如何处理登录。

// Component.
onLogged() {
    this.auth.login(this.user).subscribe({
        next: (data: any) => {
            console.log('Connection established.');
            
            let token = data.headers.get('Authorization')!;
            
            this.auth.saveToken(token);
            this.router.navigate(['/']);
        }
    });
}

// Auth Service.
login(user: User) {
    console.log('Connecting...');
    return this.http.post<User>(this.url + '/login', user, {observe: 'response'});
}

// Interceptor.
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    let token = localStorage.getItem('token');

    if (token) {
        // Adds token to header.
        request = request.clone({
        setHeaders: {
            Authorization: `Bearer ${token}`
        }});
    }

    return next.handle(request).pipe(
        catchError((error: HttpErrorResponse) => {
            if ([401, 403].includes(error.status)) { console.log('Access denied to the ressource.'); }
            
            return EMPTY;
        })
    );
}

但是,即使使用拦截器和返回 EMPTY 块,控制台上仍然出现 401 错误。 我真的不知道我做错了什么,或者我错过了什么。

我搜索了有关相同问题的最新主题,但它们已经过时了! 如果有人能帮助我,我真的很感激! :)

angular rxjs interceptor subscribe
1个回答
0
投票

查看下面的链接。我猜这是由于浏览器的默认行为 在 chrome 开发工具中隐藏 401 console.error,在 fetch() 调用时出现 401 错误

© www.soinside.com 2019 - 2024. All rights reserved.