我想在收到 403 错误时在 axios 拦截器中进行重定向。但是我怎样才能访问 React 组件之外的历史记录呢?
在 Navigating Programatically in React-Router v4 中,它在 React 组件的上下文中,但这里我在 axios 上下文中尝试
axios.interceptors.response.use(function (response) {
// Do something with response data
return response;
}, function (error) {
// Do something with response error
if(error.response.status === 403) { console.log("Redirection needed !"); }
// Trow errr again (may be need for some other catch)
return Promise.reject(error);
});
原文由 hilderic sb 发布,翻译遵循 CC BY-SA 4.0 许可协议
我通过从组件树外部访问我的 Redux Store 并从注销按钮向它发送我的相同操作来解决这个问题,因为我的拦截器是在一个单独的文件中创建并在加载任何组件之前加载的。
所以,基本上,我做了以下事情:
在
index.js
文件:在
network-service.js
文件中:最后但并非最不重要的一点是,我有一个 HOC(高阶组件),我将受保护的组件包装在其中,当会话结束时,我会在其中执行实际的重定向。这样,当我触发操作类型 UNAUTH_USER 时,它会将我的
isLogged
属性设置为我的session
减速器到false
并因此通知该组件对我来说,随时。require-auth.js
组件的文件:希望有帮助!