【问题标题】:How to go about checking for expired JWT tokens in API response using redux-saga?如何使用 redux-saga 在 API 响应中检查过期的 JWT 令牌?
【发布时间】:2020-04-04 17:36:49
【问题描述】:

在 React (create-react-app)、Redux 和 Redux-Saga 中测试 API 是否因 JWT 令牌过期而失败的最佳方法是什么?

目前我正在 API 函数中检查响应的状态代码,如下所示(我仅在 1 个地方编写了此测试):

} else if(response.status === 401) {
    return {"success" : false, "unauthenticated": true }
}

在 sagas 中,我通过以下方式对其进行测试:

else if(data.unauthenticated) {
    yield put({type: LOGOUT, message: "You are unauthenticated, Please login again!"});
}

上述方法的问题是,我必须在 API 调用结束时在每个 saga 中编写测试。我在想是否可以只在一个地方执行这个测试,就像第一个代码 sn-p 一样。因为我认为在不同的地方编写相同的测试只会增加样板代码,如果我必须扩展应用程序,这是不好的。

那么,对于我应该如何去做有什么建议吗?

【问题讨论】:

    标签: reactjs api jwt redux-saga


    【解决方案1】:

    您总是可以为 axios 实例创建一个全局拦截器。

    axios.interceptors.response.use(
       (response) => response,
       (error) => {
          if (error.response.status === 401) {
             store.dispatch(
               { type: LOGOUT, message: "You are unauthenticated, Please login again!" },
             );
          }
       },
    );
    

    注意:请记住导入您的商店以便能够调用调度。

    【讨论】:

    • 你认为我为什么使用 axios?
    • @subham 对于 axios 还有其他好的选择吗? request 也许?你到底在用什么?
    • 我认为 axios 已经成为 React 世界中 API 调用的事实标准
    • 是的,我只使用 axios
    • @subham 然后给你
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 2020-06-30
    • 2018-12-19
    • 2023-04-04
    • 1970-01-01
    • 2021-10-30
    • 2021-03-19
    • 2020-10-04
    相关资源
    最近更新 更多