Хороший способ проверить, действителен ли токен авторизации в SPA - PullRequest
0 голосов
/ 04 октября 2018

Таким образом, мы используем проверку токенов в нашем реагирующем SPA.Токен, сохраненный в файлах cookie, выглядит следующим образом:

access_token: "BIG-LONG-ASS_TOKEN"
expires_in: 1538663229368
token_type: "Bearer"

Срок действия токена истекает правильно при полной перезагрузке страницы, однако, когда пользователь остается активным в клиенте в течение нескольких дней и перемещается по другим страницам / запросам, которыми я хочу бытьвозможность выйти из системы по истечении срока действия токена.Как вы, ребята, обычно это решаете?Я подумал, что мог бы выполнить запланированную функцию, которая соответствует моему «expires_in», которая выполняет избыточное действие выхода из системы по окончании таймера, или проверять его на каждом маршруте.

Все советы приветствуются!

РЕДАКТИРОВАТЬ: Выполнение этого на каждом маршруте также не было бы так хорошо, потому что некоторые вызовы API могут быть вызваны на одном и том же маршруте.По сути, я рассчитываю на возможность отправки выхода из моего возвращенного 401/403, но централизованного, так что мне не нужно перехватывать его при каждом действующем действии, которое я получил.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы можете создать отдельный компонент для аутентификации пользователя примерно так:

const AuthenticatedRoute = ({ component: Component, ...rest }) => (
  <Route {...rest} render={(props) => {
      return isValid ? <Component {...props} /> : <Redirect to={{ pathname: '/sign_out' }} />
  }} />
);

const ConnectedAuthenticatedRoute = withRouter(AuthenticatedRoute);
export default ConnectedAuthenticatedRoute;

и в маршрутах вы можете сделать что-то вроде этого:

<AuthenticatedRoute exact path="/home" component={Dashboard} />
0 голосов
/ 04 октября 2018

Когда вы обращаетесь к своему API с токеном с истекшим сроком действия, он, вероятно, возвращает ответ HTTP 401 или 403 о статусе HTTP, вы можете проверить эти ответы в клиенте и внести необходимые изменения состояния.

Используя только методвыше может раздражать пользователя, когда он пытается выполнить действие в пользовательском интерфейсе после некоторого периода бездействия, только чтобы быть направленным на экран входа в систему.Чтобы решить эту проблему, вы можете вызвать некоторую конечную точку сервера (либо существующую, либо специальную конечную точку только для проверки токена), когда вы обнаружите присутствие пользователя и попросите пользователя войти в систему, прежде чем у него появится возможность выполнить какие-либо действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...