gpt4 book ai didi

reactjs - React Router + Axios 拦截器。如何进行重定向?

转载 作者:行者123 更新时间:2023-12-02 03:32:37 27 4
gpt4 key购买 nike

我有一个 axios 拦截器,当用户被强制注销(由于 token 过期)时,我想返回我的主页。

我不知道如何将 react 路由器传递给它。我正在使用 mobx,但不确定这是否能帮助我解决这个问题。

export const axiosInstance = axios.create({
baseURL: 'https://localhost:44391/api',
timeout: 5000,
contentType: "application/json",
Authorization: getAuthToken()
})

axiosInstance.interceptors.response.use(function (response) {
return response;
}, function (error) {
const originalRequest = error.config;
if(error.code != "ECONNABORTED" && error.response.status === 401 && !originalRequest._retry){
originalRequest._retry = true;
return axiosInstance.post("/tokens/auth",{
"refreshToken": getRefreshToken(),
"grantType": "refresh_token"
}).then(response => {
localStorage.authentication = JSON.stringify(response.data);
updateAuthInstant();
return axiosInstance(originalRequest)
});

}
return Promise.reject(error);
});

最佳答案

您应该添加 history npm 包。这样您就可以创建浏览器历史记录并在应用程序的其他地方使用它。

例如:

// routing.js

import createHistory from 'history/createBrowserHistory';

export const history = createHistory();

在包含路由的组件中。

import { Route, Router } from 'react-router-dom';
import { history } from './routing.js';

import ComponentA from './ComponentA';
import ComponentB from './ComponentB';

const Routes = () => (
<Router history={history}>
<div>
<Route exact path='/route1' component={ComponentA} />
<Route exact path='/route2' component={ComponentB} />
</div>
</Router>
);

在您想要控制路由的其他文件中:

import { history } from './routing.js';

function changeRoute() {
// things happening here..
history.push('/route2');
}

调用 changeRoute() 时,路径会更新为 /route2,并且 ComponentB 将被渲染。

关于reactjs - React Router + Axios 拦截器。如何进行重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51388553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com