Jwt RxJS概念帮助:访问和刷新令牌,非同步刷新
我是RxJS的新手,希望获得有关如何实现以下过程的概念性帮助:Jwt RxJS概念帮助:访问和刷新令牌,非同步刷新,jwt,rxjs6,Jwt,Rxjs6,我是RxJS的新手,希望获得有关如何实现以下过程的概念性帮助: 后端使用短期JWT访问令牌进行保护。在进行身份验证后,向客户端发出初始访问令牌和长寿命刷新令牌。刷新令牌可用于创建新的访问令牌 客户端可以解码令牌,并知道令牌是否过期。客户端应在访问令牌过期时延迟刷新访问令牌;不重试失败的请求 客户端不得同时发出多个刷新请求 最后一部分,我挣扎着。我想象一个信号灯,或某种“门”: 第一个刷新请求通过闸门并将其锁定在其后面。然后,它启动实际的令牌刷新 其他刷新请求在大门处被阻止,等待通过 令牌刷新完
- 第一个刷新请求通过闸门并将其锁定在其后面。然后,它启动实际的令牌刷新
- 其他刷新请求在大门处被阻止,等待通过
- 令牌刷新完成后,存储新的访问令牌并提升门
- 所有刷新请求都返回新的访问令牌
或者,门是否可以由
行为主体实现?我找到了一个解决方案!代码是可用的
gate使用行为subject
使一个singleton持有状态。通过应用过滤器,我得到了一个阻塞闸门,当底层闸门提升时,该闸门将允许通过:
const gate$ = new BehaviorSubject(true); // open at first
const openGate$ = gate$.pipe(
filter(x => x === true),
take(1) // take only one event, then complete
);
// wait for the gate to open
openGate$.subscribe(() => {
// do something
});
// close the gate:
gate$.next(false);
// and open it again
gate$.next(true);
通过使用行为主题
,默认情况下会初始化并打开闸门