A Refresh Token is a special kind of token that can be used to obtain a renewed access token —that allows accessing a protected resource— at any time. You can request new access tokens until the refresh token expires. Refresh tokens must be stored securely by an application because they essentially allow a user to remain authenticated forever.
Vegeu Laravel Passport
Utilitzar un timer. Si per exemple fem una crida a Laravel passport i en retorna un acces token:
{ token_type: "Bearer", expires_in: 46, access_token: "TOKEN_HERE", refresh_token: "REFRESH_TOKEN_HERE" }
En aquest cas fixeu-vos expira en 46 segons. Un pràctica possible seria un cop rebut el token establir amb setTimeout una crida a refresh token per al cap de 23 segons (per anar segurs a la meitat del temps)
setTimeout(this.refreshToken, intervalMillisec);
On refreshToken seria una funció que fa una petició al grant refresh token per obtenir un nou token i torna a guardar el token i el token de refresh i a establir un nou timeout per a la meitat del temps en que expiri el token
NOTA: De fet no estaria de més assegurar-se que si pel que sigui no s'aconsegueix un refresh token a la meitat de temps (per exemple un error de xarxa) es tornes a provar més tard abans d'expirar i si finalment expirar tornar a logar l'usuari i tornar a començar
Un exemple: