Как избежать ненужных вызовов API при проверке правильности токена JWT в cookie - PullRequest
0 голосов
/ 24 апреля 2019

Моя настройка следующая. Когда пользователь входит в систему через мой реагирующий веб-интерфейс, я выполняю API-вызов на стороне сервера, где генерируется токен JWT и отправляется обратно в защищенный только cookie HTTP-файл. Любые последующие вызовы API, сделанные из внешнего интерфейса, будут иметь этот cookie, поэтому я просто проверяю эту сторону на сервере, прежде чем обрабатывать запросы.

Проблема заключается в защите моих маршрутов на внешнем интерфейсе. Прямо сейчас у меня есть компонент высшего порядка, обернутый вокруг каждого компонента, который у меня есть. Этот HOC выполняет вызов API для проверки правильности токена. Серверная сторона в основном просто возвращает 200, если токен действителен, и в этом случае компонент, завернутый в HOC, визуализируется. Если токен недействителен, возвращается 401, и я перенаправляю пользователя на страницу входа. Как вы можете видеть, каждый раз, когда я хочу визуализировать компонент, мне приходится вызывать API-интерфейс для проверки токена, что кажется очень неэффективным. Это можно обойти? Я не хочу использовать локальное хранилище, поскольку я прочитал, что хранение там JWT делает возможными атаки XSS.

Может быть, я могу отслеживать время с момента последней проверки правильности токена на стороне клиента? Таким образом, я могу выполнить вызов API только для проверки токена, если прошло определенное время, вместо того, чтобы делать это каждый раз, когда я хочу визуализировать компонент. Я не уверен, насколько это безопасно.

Любая помощь будет высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 24 апреля 2019

Создание промежуточного программного обеспечения, которое проверяет, истек ли текущий токен или произошла ли какая-либо ошибка. Если ответ возвращает ошибку или токен с истекшим сроком действия, сделайте новый запрос в промежуточном программном обеспечении и обновите свой cookie новым токеном.

Если вы используете axios, вы можете использовать перехватчики для достижения этой цели.

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