SPA приложение на основе API: как правильно обновлять access_token токен?
Если писать классическое веб-приложение, то в нем авторизация на основе кукисов, причем каждое обновление страницы "продлевает" куку авторизации.
А как быть со SPA-приложением, которое использует JWT-токены? API выдает access_token со временем жизни, допустим, 30 минут. По истечение этого времени API блокирует запросы с этим токеном, так как он просрочился, хотя пользователь продолжает работать в системе.
Логично, что токен доступа нужно продлить, и для этого есть refresh_token со значительно большим временем жизни. Как правильно обновлять access_token в браузере?
Вот мои варианты:
- если очередной запрос вернул 401, пробуем получить новый токен, и повторяем запрос
- ставим таймер, который каждые 30 минут обновляет токен (точнее - когда истекает время старого)
- перед выполнением запроса проверяем, истек ли токен (дата инвалидация прописана в самом токене), и если истекла - получаем новый
- если 401, выдаем окошко пользователю "сессия закончилась" с одной кнопкой "войти снова" - смущает некоторая бессмысленность
Как правильно?