【问题标题】:Headers Weirdly Refreshed with fetch-api in Redux-Thunk在 Redux-Thunk 中使用 fetch-api 奇怪地刷新了标头
【发布时间】:2016-02-15 05:48:03
【问题描述】:

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

我的 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,在我看来,当标头不存在时,它会给我过期的响应。

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

【问题讨论】:

    标签: reactjs redux fetch-api redux-thunk


    【解决方案1】:

    我认为不可能根据您分享的 sn-p 缩小问题范围,但我建议以下几点:

    1. 使用 redux-devtools 检查发生的操作以及它们如何影响您的状态。
    2. 考虑使用redux middleware 更新accessToken 和到期日期。您的用例非常适合它。操作应该反映用户交互,而 refreshToken 不是。

    【讨论】:

    • 感谢建议 redux 中间件,我跳过了这个。是的,我后来确实集成了 devTools,但无法从中获得更多线索,REFRESH_TOKEN 操作(在thunk) 只是以某种方式携带过期的令牌......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2019-08-07
    • 2020-06-05
    • 2021-06-16
    • 2016-09-01
    • 2020-10-28
    相关资源
    最近更新 更多