Я использую токен JWT для аутентификации в reactJS с Django в качестве бэкэнда. Когда срок действия маркера refre sh истекает, Ax ios используется в качестве перехватчика, и он меняет URL-адрес страницы на /account/login
. Однако реактивный маршрутизатор не отображает страницу входа.
Вот код моего перехватчика: ax ios. js file
import { createBrowserHistory } from 'history';
const history = createBrowserHistory();
axios.interceptors.response.use((response) => {
return response
}, function (error) {
const originalRequest = error.config;
if (error.response.status === 401 && originalRequest.url.includes('/api/token/refresh/')) {
console.log('101')
history.replace('/account/login/')
store.dispatch(actionCreator.setAuthFalse());
return Promise.reject(error);
}
Вот код для мой маршрут:
в приложении. js
<Suspense fallback={<Loader/>}>
<BrowserRouter>
<Fragment>
<Navbar/>
<Switch>
<Route exact path='/service/' component={AllServices}/>
<Route exact path='/article/' component={Article}/>
<Route exact path='/account/login/' component={LoginPage} />
</Switch>
</Fragment>
</BrowserRouter>
</Suspense>
const mapStateToProps = state => {
return {
accessToken: state.accessToken,
refreshToken: state.refreshToken,
expiresIn: state.expiresIn,
isAuthenticated: state.isAuthenticated
}
}
const mapDispatchToProps = dispatch => {
return{
auth_user_after_refresh: (refreshToken) => dispatch(authActions.getAnotherAccessToken(refreshToken)),
logout: () => dispatch(authActions.logoutUser())
}
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(App));
Как убедиться, что компонент отображается при изменении URL-адреса?