Есть SPA-приложение на React-е. Авторизация на Backend приложения производится с помощью OAuth2-авторизации Google, Facebook,...
Последовательность действий следующая:
1. В браузер загружается index.html и инициализируется React-приложение.
2. Проверяется localStorage на наличие access- и refresh-токенов. Если токены есть, то выполняется запрос на Backend (с access-токеном) для получения информации о пользователе.
3. Если Backend отвечает 403 ошибкой, то используются access- и refresh-токены.
4. Если с refresh-токеном Backend опять возвращает 403 ошибку, то пользователь переводится на страницу с кнопками авторизации "Continue with Google" и остальными.
5. После успешной OAuth-авторизации на Google, Backend получает пользовательские Имя и E-mail, генерирует access- и refresh-токены и перенаправляет пользователя на страницу login.html, задача которого записать токены в localStorage и сделать редирект на index.html.
Этот механизм отлично работает, и React-приложение обновляет свои токены при выполнении XHR-запросов на Backend.
Теперь мне нужно каким-то образом авторизовать браузер пользователя, запрашивающий с сервера статику (картинки, документы,...).
- Подсунуть заголовки в запрос я не могу;
- Использовать access-токен как параметр в ссылке на статику тоже не могу - время его жизни короткое, пользователь может быть авторизован давно, а запросить статику только сейчас;
- Использовать оба токена так же бессмысленно, т.к. не смогу обработать заголовки.
Остается использовать куку, которую можно запросто утянуть. Подскажите как лучше сделать.
Eugene Khrustalev, ну статика же доступна по ссылкам со страницы. там и обновлять куки. т.о. статика будет иметь валидные токены. если приходит невалидный токен на статику, то переадресовывать.