Делаю сайт на Nuxt, если с авторизацией по API все понятно, мы получаем токен и храним его, то как быть с refresh токеном? У нас предположим есть дата когда основной токен прекращает работать и настал момент его обновлять, как это проверять? Через setInterval сверять дату токена? Или же через каждый переход по страницам через beforeEach?
Делал через axios и общий обработчик, в случае не рабочего токена, отправлял ошибку вида 405 (для примера). На фронте, на эту ошибку ставил действия отправки refresh token, если он ошибочный выкидывал из системы. Если ок, то обновлял access token и делал запрос снова.
Ага. Наху..к вешать. На странице с динамическим контентом это пипец как поможет. Токен умрет и например лента перестанет отображаться. Уведомления перестанут приходить. И что ваш компонент нарисует когда токен протух - у нас ошибко, обновите страницу? А то у нас рефрешь в хуке роутера...
dicem, самому интересно. На англоязычных ресурсах пихают в перехватчик запроса axios - когда 401 возврат, они обновляют токен и повторяют запрос. Я таймер повесил, который читает из токена сколько ему жить осталось, и на 10% обновляет.
dicem, я сделал как смог придумать. Вынес в отдельный компонент. В нем Хук на монтирование в котором запускается работа с токенами. Если живой, то ничего не делает и запускается таймер. Если меньше 10% - обновляет. Остальные ждут когда состояние токена изменится.
Мне кажется, что токен надо обновлять только при наличии пользовательских действий. Даже если какие-то компоненты динамически обновляют постоянно свой контент, они перед отправкой запросов должны проверять = валидный ли токен.
Иначе получается, что авторизация у человека никогда не протухает на странице. Её постоянно обновляют динамические компоненты.
Согласно этому, нужно выносить работу с запросами в отдельный сервис и там на основе ответов сервера или перевыпускать пару токенов или отправлять на повторную авторизацию
Алексей, ничего не понял. Пример с потолка - биржевая аналитика. Вам сервер поставляет и периодически данные, но нужна авторизация. TTL токена 5 минут. У меня графики через 5 минут что покажут? "Обновите токен"... Сервер авторизации по вашему что-то должен знать про поставляемый ресурс? Бред какой-то. Сессии раньше в каждый запрос пихали и как-то прожили 20 лет