我正在使用以下的软件包组合:
(我不承认我对所有这些都很新)
目前我有一个PrivateRoute
组件,它将检查(并在必要时刷新)路由更改时过期的IdToken。这很有效。
我的问题是,如果浏览器在令牌到期后打开到PrivateRoute,它正在轮询我的API并在其“授权”标题中发送IdToken。 API将开始返回401.
我可以捕获401错误并发送一个动作来刷新令牌,但是
如果刷新令牌有任何问题我会在无限循环中敲击AWS,所以需要一些逻辑来捕获并防止这种情况发生。如果刷新失败,可能会重定向到登录路由?
然后我需要为我的应用程序中的所有私有API调用添加复杂性以获得此逻辑,并在成功刷新后重新执行所请求的API调用。
对我而言,分离API调用并保持身份验证令牌有效更有意义。考虑到react-cognito将令牌到期时间存储在cognito.user.signInUserSession.idToken.payload.exp
中,也许可以预先激活API调用和到期。
如何最好地做到这一点?在登录时,可以使用setTimeout为将来的(currentTime - expiryTime - someBuffer)秒“调度”刷新操作。
或者我可以设置一些内容来经常轮询cognito.user.signInUserSession.idToken.payload.exp
以检测并刷新几乎过期的令牌?
有什么建议吗?