Эта ситуация возникает, когда пользователь вводит много информации в какое-либо поле или форму, после чего срок действия токена истекает. В этом случае пользователь теряет всю информацию. Поэтому мы должны реализовать функцию автоматического обновления токена
. Вот конфигурация промежуточного программного обеспечения
const middlewareConfig = {
interceptors: {
request: [
({ getState, dispatch }, config) => {
return config;
},
],
response: [
{
error: ({ getState, dispatch, getSourceAction }, error) => {
if (error.response.status === 401) {
dispatch(actions.setAuthErrorStatus());
}
if (error.response.headers.hasOwnProperty('sso-authenticate')) {
redirectToLocationUrl(error.response.headers["sso-authenticate"])
} else if (error.response.config.method === 'get') {
if (url_config.DEFAULT_CLIENT === 'local_proxy') {
cancelEventNotification(error);
}
}
return Promise.reject(error);
},
success: ({ dispatch }, response) => {
redirectToLocationUrl(response.headers.location);
return response;
},
},
],
},
returnRejectedPromiseOnError: false,
};
. Это файл, в котором хранилище создает
import React from 'react';
import { Provider } from 'react-redux';
import { applyMiddleware, createStore } from 'redux';
import { multiClientMiddleware } from 'redux-axios-middleware';
import { composeWithDevTools } from 'redux-devtools-extension';
import reduxThunk from 'redux-thunk';
import { clients } from './middlewares/axiosMiddleware/clients';
import config from './middlewares/axiosMiddleware/config';
import reducers from './reducers';
interface IRootChildren {
children: JSX.Element;
}
const middlewares = [reduxThunk, multiClientMiddleware(clients, config)];
const store = createStore(reducers, composeWithDevTools(applyMiddleware(...middlewares)));
export default ({ children }: IRootChildren) => {
return (
<Provider store={ store }>
{ children }
</Provider>
);
};
.