小编Ant*_*sha的帖子

Angular 8 Intercept 调用刷新令牌

如果当前访问令牌已过期,我正在尝试刷新访问令牌。

我一次发送多个请求,我想创建一种队列,因此其他请求不会请求刷新令牌路由。

我在谷歌上搜索了一些最佳实践和示例,并找到了以下针对 Angular 6 和 rxjs v6 的解决方案,它使用了 BehaviourSubject 和 switchMaps。(请看附件代码)

但是我使用的是 Angular 8 (8.1) 和 rxjs v6.4,这个解决方案对我不起作用。

它根本没有达到switchMapthis.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

12
推荐指数
1
解决办法
2万
查看次数