Даже после реализации перехватчика Axios и промежуточного программного обеспечения для перехвата ошибок 401, мое приложение не распознает момент истечения срока действия сеанса и, следовательно, не обновляет состояние isAuthorized до false. Я хочу, чтобы приложение реагировало соответствующим образом, отправляя действие выхода из системы всякий раз, когда с сервера возвращается ошибка 401.
Я уже сделал следующее:
Код: Выделить всё
const initialState: UserEntity = {
access_token: '',
user: null,
isAuthorized: false,
tag: '',
};
export default {
'user/authorize': (state: UserEntity, action: PayloadAction) => {
state.user = action.payload.user;
state.isAuthorized = action.payload.isAuthorized;
state.access_token = action.payload.access_token;
},
'UNAUTHORIZED_ACCESS': (state: UserEntity) => {
state.user = null;
state.isAuthorized = false;
state.access_token = '';
},
};
Код: Выделить всё
import axios from "axios";
import { Middleware } from "@reduxjs/toolkit";
const unauthorizedMiddleware =
(store: { dispatch: (arg0: { type: string }) => void; getState: () => any; }) =>
(next: (arg0: any) => any) =>
(action: any) => {
if (action.payload && action.payload.status === 401) {
store.dispatch({ type: "UNAUTHORIZED_ACCESS" });
return;
}
// Axios interceptor for handling 401 errors
axios.interceptors.response.use(
(response) => response,
(error) => {
if (error.response && error.response.status === 401) {
store.dispatch({ type: "UNAUTHORIZED_ACCESS" });
}
return Promise.reject(error);
}
);
return next(action);
};
export default unauthorizedMiddleware;
Есть ли лучший способ управления истечением срока действия сеанса и обрабатывать сброс состояния пользователя глобально в настройке React + Redux?
Подробнее здесь: https://stackoverflow.com/questions/790 ... from-flask