ты запрос, увидел что протух токен... отправил рефреш на сервис рефреша, получил новый и погнал в аполло
Запрос на новый токен проходит через этот же интерцептор, на него вешается уже истекший или невалидный токен и сервер присылает 401
проблема не в интерсепторе, кмк, а в логике реализации. Ты отправляешь запрос, токена нет/он протухший. Тебя редиректит на форму логина. Ты входишь в систему, получаешь токен. Из него извлекаешь время, когда он протухнет. До того, как этот момент настал - отправляешь валидный токен на рефреш и получаешь свежий. Если что-то где-то сглючило и у тебя невалидный токен, вновь редирект на логин. Никаких "я отключу отправку токена и открою дырищу в безопасности"
Я понимаю что что-то не так с реализацией. Поэтому обратился сюда. Но как тогда правильно отслеживать время жизни токена? Т.е. допустим я получил токен, живет он 10 минут, я слежу чтобы через 9 минут он обновился, но при этом закрываю браузер и через 5 минут открываю. Как понять через сколько его обновить? Или обновлять при каждом входе, если токены допустим в localStorage?
варианты разные... например - при любом запросе ты так и так цепляешь токен. В процессе запроса - проверяй время его истечения, если оно меньше порогового значения, делай запрос с текущим токеном (который еще валиден) и параллельно - запрос на рефреш
Что ты имеешь в виду под проверкой времени его истечения?
в токене есть exp - экспайр дата, время окончания жизни токена. Берешь его и вычитаешь из текущего времени. Если разность меньше какого-то порога, инициируешь запрос на рефреш
Имеешь в виду должно быть поле с датой окончания? На текущий момент просто есть только поле с длительностью его жизни)
Значит должна быть ещё дата начала активности. Потому что толку просто от длительности нет Что за токен вообще? Кастомный какой то?
Обсуждают сегодня