我可能建议使用单独的生成器函数,该函数将在后台刷新令牌。该过程将如下所示:
- 令牌是由一些传奇故事产生的,例如
login
。它将分派LOGIN_SUCCESS
操作将令牌存储在Redux中。
我有一个redux-saga
中间件来促进异步存储操作,并且所有API调用都是通过sagas进行的。现在实现OAuth2
,我想检查我的令牌是否已过期,然后在API调用发生之前用刷新令牌刷新它]。问题是我无法找到一种方法来拦截传奇故事。我的expiresAt
值处于存储状态,应用于确定访问令牌是否已过期。
我想建造什么
将在每个传奇之前运行的拦截器,它可以访问redux状态并触发redux动作。这样我就可以从商店访问expiresAt
并将其与当前日期时间进行比较,然后如果令牌已过期,则触发刷新API对其进行刷新并随后调度商店操作,然后真正的英雄传奇可以使用更新的令牌。
到目前为止找到的方法:
感谢您的帮助。另外,如果我没有正确地考虑眼前的问题,请告诉我正确的解决方法。可能没有传奇。
我正在使用redux-saga中间件来促进异步存储操作,并且所有API调用都是通过sagas进行的。现在实现OAuth2,我想检查我的令牌是否已过期,然后使用...
我可能建议使用单独的生成器函数,该函数将在后台刷新令牌。该过程将如下所示:
login
。它将分派LOGIN_SUCCESS
操作将令牌存储在Redux中。refreshToken
将监听LOGIN_SUCCESS
动作并启动计时器。当计时器到期时,它将刷新令牌或为执行令牌刷新的传奇调度操作。 LOGIN_SUCCESS
,这将使我们进入步骤2。因此,令牌将始终被刷新,并且用户在执行操作时不会遇到延迟。
作为附加检查,您可以实施专用路由,以防令牌刷新失败而自动注销用户。
我可能建议使用单独的生成器函数,该函数将在后台刷新令牌。该过程将如下所示:
login
。它将分派LOGIN_SUCCESS
操作将令牌存储在Redux中。