如果当前访问令牌已过期,我正在尝试刷新访问令牌。
我一次发送多个请求,我想创建一种队列,因此其他请求不会请求刷新令牌路由。
我在谷歌上搜索了一些最佳实践和示例,并找到了以下针对 Angular 6 和 rxjs v6 的解决方案,它使用了 BehaviourSubject 和 switchMaps。(请看附件代码)
但是我使用的是 Angular 8 (8.1) 和 rxjs v6.4,这个解决方案对我不起作用。
它根本没有达到switchMap在this.authService.requestAccessToken().pipe。(使用console.log测试)
但是,如果我发表评论return this.refreshTokenSubject.pipe并返回,next.handle(request)它会到达那个 switchMap,但我的其他请求都失败了。
您知道是否有任何更改,或者我应该尝试以其他方式执行此操作吗?
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
import { AuthService } from './auth.service';
import { Observable, BehaviorSubject, Subject } from 'rxjs';
import { switchMap, take, filter } from 'rxjs/operators';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
private refreshTokenInProgress = …Run Code Online (Sandbox Code Playgroud) rxjs angular-http-interceptors refresh-token angular angular8