1

嗨,我刚刚遇到一个我不完全理解的问题。

我的 API 在每次请求时都会向我的客户提供一个新的 Auth-Token,以便在下一个请求时使用并再次获得一个新的。但是有一点点扭曲:在短时间内(几秒钟内)发送的请求将被视为批处理,并且所有这些请求可以并且必须使用相同的 Token,因为 API 不会为这些请求提供新的 Token .

奇怪的是所有批处理请求响应都不包含新令牌,但我的客户端应用程序仍然以某种方式管理以使用旧令牌和过期令牌刷新它的状态......

这就是我所做的:在每个成功的请求中,我都会发送一个“REFRESH-TOKEN”操作,该操作从响应标头中获取新信息,如下所示:

let accessToken = response.headers.get("Access-Token")
let expiry = response.headers.get("Expiry")
dispatch(refreshTokens({
    status: "loggedIn",
    accessToken: accessToken,
    expiry: expiry
}));

response来自 fetch-api,在我看来,当标头不存在时,它会给我过期的响应。

非常感谢谁能向我解释发生了什么。现在我不满意的解决方案是关闭批处理请求功能。

4

1 回答 1

1

I don't think it is possible to narrow down the issue based on the snippet you shared but I recommend the following things:

  1. Use redux-devtools to inspect occurred actions and how they affect your state.
  2. Consider using redux middleware to update accessToken and expiry date. Your use case fits it very well. Actions should reflect user interaction, which refreshToken is not.
于 2015-11-18T23:53:00.363 回答