#JuanPablo IS5686 ya almacene la fecha en
1 messages · Page 1 of 1 (latest)
@languid lake algo asi lo haria yo:
async function getAccesToken() {
const { token, fecha } = JSON.parse(
localStorage.getItem("access_token") || "{}"
);
const fechaEnUnaHora = +new Date() + 1 * 60 * 60 * 1000;
if (token && fecha < fechaEnUnaHora) {
return token;
}
const result = await msalInstance.loginPopup({});
localStorage.setItem(
"access_token",
JSON.stringify({ token: result.accessToken, fecha: +new Date() })
);
}
A ver si te entendí, en mi local storage debería de tener algo así {'token': ... , ' fecha'}
Para poder hacer esa primera parte de tu codigo donde desestructuras token y fecha?
Al guardar en el localStorage guardarías un JSON parseado a un string, donde tienes el token y la fecha JSON.stringify({ token: result.accessToken, fecha: +new Date() })
@languid lake, igual si existe alguna función en la DOC de la librería que te permita validar la expiración de tu token y además te genera uno nuevo, esta opción que te doy la puedes omitir y usar lo de la librería, el ejemplo que te pongo es una alternativa en caso de que no exista estas funcionalidades dentro de la librería
Vale entiendo, la funcion de refrescar token donde la debería poner para que vaya preguntando, en toda funcionalidad donde requiera dicho token o debería hacerlo en el padre de mi app para que siempre que renderice vaya preguntando?
Pues no me queda muy claro lo que he leído de la librería igual ire buscando y probare tu solución
Creería que esta bien dejarlo dentro de getAccesToken, me imagino que es la función que llamas en cada momento cuando necesites el token
getAccesToken solo la utilizo cuando hago el inicio de sesión
Y como haces para acceder al token en otras funciones?, llamas directamente al localStorage?
La verdad no se como accedo al token en esas funciones por ejemplo acá estoy trayendo la data por medio de una funcion getUserPhoto que recibe un email para poder sacar la información de ese usuario
Para poder hacer eso necesito un token ya que si lo hago por postman si no pongo el token de mi inicio de sesión no me permite sacar la info de la api
Me funciona bien pero cuando dejo un tiempo y vuelvo a entrar a mi app pues fallan esas funcionalidades por eso supongo que es el token
Y en que parte estás llamando a getAccessToken?
Pero no entiendo, por que te llamarían las peticiones si no estas usando el token en ellas, viendo tu código, solo veo que llamas al token para hacer un jwt_decode y sacar cierta info de allí, pero no veo que la uses para otras consultas
Igual prueba dejando la funcionalidad de validar la fecha de creación del token dentro de getAccessToken y mira si al expirar un token te consulta las otras funciones
Vale probare eso, lo dejare quieto hasta que expire y probare. Lo siento si depronto no me hago entender o ves cosas en mi codigo raras jaja estoy aprendiendo aún y pues me cuestan muchas cosas, tengo muchos errores aún
Gracias por tu tiempo JuanPablo, depronto mas tarde te moleste de nuevo dependiendo de lo que me surja eres muy amable
Tranquilo, todos empezamos por ahí