如何使用 redux-saga 在 API 响应中检查过期的 JWT 令牌?
Posted
技术标签:
【中文标题】如何使用 redux-saga 在 API 响应中检查过期的 JWT 令牌?【英文标题】:How to go about checking for expired JWT tokens in API response using redux-saga? 【发布时间】: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 一样。因为我认为在不同的地方编写相同的测试只会增加样板代码,如果我必须扩展应用程序,这是不好的。
那么,对于我应该如何去做有什么建议吗?
【问题讨论】:
【参考方案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 然后给你以上是关于如何使用 redux-saga 在 API 响应中检查过期的 JWT 令牌?的主要内容,如果未能解决你的问题,请参考以下文章
redux-saga api yield 调用有效,但没有返回数据
如何使用 Redux-Saga 和 Hooks 调用 API