Реагировать - Сохранить информацию формы после получения ответа 401 от API - PullRequest
0 голосов
/ 19 января 2020

Я работаю над реагирующим приложением как младший разработчик.

Когда пользователь отправляет форму и API отправляет обратно маркер 401 с истекшим сроком действия, я хочу, чтобы его перенаправили на страницу входа (это нормально). , но я хочу, чтобы он go сформировал страницу, как только он снова войдет в систему с данными, которые он ранее заполнил, чтобы получить перенаправление на страницу входа

У меня есть перехватчик, который выводит пользователя из системы, когда код 401 При возврате из API он вызывает мой метод выхода из службы аутентификации, а затем мой личный маршрут перенаправляет на страницу входа в систему:

if (!isLoggedIn) {
  // not logged in so redirect to login page with the return url
  return (
    <Redirect to={{ pathname: "/", state: { from: props.location } }} />
  );
} 

Я хочу перенаправить пользователя в props.location, когда он снова входит в систему и сохраняет свои данные

Ребята, вы знаете, как это сделать?

Большое спасибо за вашу помощь

1 Ответ

1 голос
/ 19 января 2020

401 - не разрешено.

В случае выхода пользователя из системы и маршрута управления у вас есть withrouter + history

В документации:

go (n) - (функция) Перемещает указатель в стеке истории на n записей

Здесь определен компонент для goBack - это go n (-1) в истории. Вы также можете определить свой лог c в функции

import React from 'react';
import { withRouter } from 'react-router-dom';
import ReturnIcon from '../../img/tech/return-white-icon.svg'

const GoBack = ({ history }) => <img src={ReturnIcon} onClick={() => history.goBack()} alt="Go back" />;

export default withRouter(GoBack);

Также важно помнить - для перенаправления на авторизованный маршрут - необходима предварительная аутентификация .


Вы можете предотвратить потерю своего токена:

Также может быть срок действия. По истечении этого срока действия сервер больше не будет разрешать доступ к ресурсам с этим токеном. На этом этапе пользователь должен будет получить новый токен доступа с помощью повторной аутентификации или с помощью какого-либо дополнительного метода: refre sh token.

Существует много теории , & теория

Когда вы определяете токен на бэкэнд-сайте, одним из необязательных параметров является жизненный цикл - например, токен может быть действителен для 4 часа, а затем отключен.

Вам нужно прочитать о токенах (refre sh, accessibility et c.)

Одна из возможностей - создать токен refre sh на бэкэнде. сайт - и позвоните из внешнего интерфейса

Node.js:

var refreshTokens = {} 
      var token = jwt.sign(user, SECRET, { expiresIn: 300 }) 
      var refreshToken = randtoken.uid(256) 
      refreshTokens[refreshToken] = username res.json({token: 'JWT ' + token, refreshToken: refreshToken}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...