Срок действия сеанса: React Redux не распознает 401 из Flask ⇐ Python

Программы на Python
Anonymous
Срок действия сеанса: React Redux не распознает 401 из Flask

Сообщение Anonymous »

Я разрабатываю приложение React + Redux, которое взаимодействует с серверной частью Flask. Проблема возникает, когда истекает срок действия сеанса пользователя на сервере Flask, что приводит к несанкционированному ответу 401. Я хочу обрабатывать эти ответы глобально в своем приложении React, чтобы при возникновении ошибки 401 приложение сбрасывало состояние пользователя.
Даже после реализации перехватчика 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 распознает несанкционированный ответ 401 от серверной части Flask?
Есть ли лучший способ управления истечением срока действия сеанса и обрабатывать сброс состояния пользователя глобально в настройке React + Redux?

Подробнее здесь: https://stackoverflow.com/questions/790 ... from-flask

Вернуться в «Python»