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