Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

171
Visualizações
Las llamadas asincrónicas detectan errores 401 Javascript

He escrito una pequeña aplicación usando React Native y TS. En mi aplicación, uso la autorización a través access_token s con una duración de una hora. Cada vez que el token caduca, ejecuto la función refreshToken donde envío access_token y refresh_token que se guardaron previamente en el almacenamiento local y los envío a través del método POST.

básicamente algo como esto:

 if (token_from_storage !== is_expired) { //assuming token is indeed in storage return access_token; } else { //this Function calls an api with refresh token const { tokens }: { tokens: ITokens } = await refreshToken(refresh_token); saveTokens(tokens); //here we save new access_token and refresh_token }

después de refreshToken haya terminado, los nuevos tokens se guardan localmente (y se actualizaron en el nivel de base de datos) y deben usarse si desea actualizar los tokens nuevamente.

Por ejemplo, lanzamos una aplicación con un token caducado. Los métodos al principio serán getUserInfo() y getApplicationInfo() que obtienen algunos datos importantes. Se lanzan a través de redux-saga o algo similar (async).

 //first app screen useEffect(() => { dispatch(ACTION_GET_USER_INFO); dispatch(ACTION_GET_APPLICATION_INFO); },[])

el primer método lanzaría refresh_token casi al mismo tiempo que el segundo. Los tokens se reconstruirán para el primer método y se actualizarán en el nivel de la base de datos. En el momento en que el segundo método llame a refreshToken (se lanzó al mismo tiempo; también piensa que el token está muerto), el refresh_token se cambiará en el nivel de la base de datos y no responderá 200 en la llamada refreshToken() .

¿Qué se debe hacer para lograr una correcta renovación?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si entiendo su problema correctamente, parece que está llamando a dos funciones asíncronas que actualizan los tokens si el token actual ha caducado.

Esto indica que está experimentando una condición de carrera en su instrucción useEffect, y debido a que las solicitudes manejan la actualización de su token de forma independiente, al menos una de las solicitudes tendrá un token no válido.

Personalmente, no estaría manejando tokens en el cliente, especialmente con el almacenamiento local.

Sin embargo, si debe hacerlo, puede corregir la condición de carrera agregando una capa de servicio que maneje las solicitudes y los tokens de forma singular. Sus funciones de despacho pasarán a través de la capa de servicio que puede determinar la necesidad de actualizar un token y si un token ya se está actualizando de manera síncrona antes de intentar enviar las solicitudes.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda