Время истечения Reactjs Token - PullRequest
0 голосов
/ 28 мая 2018

я делаю одностраничный веб с логином через Reactjs.Проблема заключается в том, как и где сохранить токен истекает время.Нужно ли сохранять в sessionStore, но при закрытии браузера все данные будут удалены.Местный магазин?Но тогда данные будут навсегда.Или я могу сохранить в localStore, и в каждом событии мне нужно добавить функцию, которая проверяет время истечения из localStore, когда событие вызвало успешное обновление localalstore снова?но код будет выглядеть ужасно ... а как насчет проблем с производительностью?Это приложение приемлемо?

1 Ответ

0 голосов
/ 28 мая 2018

Используете ли вы Redux && Redux thunk?

Если да, то я придерживался следующего подхода:

  1. Когда пользователь вошел в систему, я сохраняюполучить доступ и обновить токены в Магазине.
  2. Я использую redux-persist , чтобы сохранить токены в localStorage (есть и другое хранилище), чтобы сохранить их, когдаПользователь обновляет / повторно открывает приложение.
  3. Имеет промежуточное ПО, которое проверяет, остается ли токен доступа действительным перед каждым запросом API.
    1. Если срок его действия истек, попробуйте обновить токен доступа, используя токен обновления.
    2. Если срок его действия не истек, просто выполните запрос API.
  4. Если пользователь вышел из системы или оба токена истекли, то я очищаю Хранилище (и localStorage также через redux-persist).

Более подробно, для вышеуказанного потока, вы можете проверить в оригиналеответ (откуда я взял вдохновение): https://stackoverflow.com/a/36986329/4312466

Если вы не используете какие-либо библиотеки управления состоянием:

Это вариант следовать приведенной выше идее,но вместо хранилища, промежуточного программного обеспечения и использования redux-persist вы можете:

  1. Сохранить токены в localStore.
  2. Создать слой (класс, функцию или любой другойвы хотите) в вашем приложении, которое будет действовать как промежуточное ПО.Каждый раз, когда вы хотите вызвать API, вы сначала вызовете этот слой, который проверит, является ли токен действительным:
    1. И если это так, только тогда вызовет запрос API.
    2. Еслисрок действия токена истек, этот слой будет хранить все дальнейшие запросы API в очереди, пытаясь обновить токен.

Однако, если вы выполняете SPA и имеетесложные операции с состоянием, я рекомендую вам использовать библиотеку управления состояниями.

...