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

246
Visualizações
Cómo crear sesión en nodejs + reaccionar

Estoy trabajando en la aplicación de front-end de reacción y el middleware está escrito en nodejs. Estoy usando un token de acceso de autenticación que caduca en 3600 ms, por lo que necesito crear una sesión durante 7 días para que el usuario no cierre la sesión antes de 7 días.

¿Cuál es la forma de crear sesión? ¿Debo hacerlo en la aplicación de reacción o en la aplicación de nodo js?

PD: no queremos implementar el enfoque de token de actualización. ¿Alguna forma de configurar la sesión y es válida durante 7 días?

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

0

Puede usar un token de acceso + token de actualización para lograr esto. Use tokens de acceso más cortos y mantenga el vencimiento de 7d para el token de actualización.

Una vez que expire el token de acceso, puede actualizarlo pasando el token de actualización. Esto funcionará hasta que el vencimiento de su token de actualización sea de 7 días. Entonces el usuario tiene que iniciar sesión de nuevo.

Algo como lo siguiente.

 export const generateAccessToken = (user: UserResponse): string => { return jwt.sign( { userId: user.user_id, clientId: user.client_id, createdAt: new Date().getTime(), storageKey: user.storageKey ?? "", pipelineKey: user.pipelineKey ?? "", }, process.env.ACCESS_TOKEN_SECRET, { expiresIn: `3600s` } ); }; export const generateRefreshToken = async ( user: UserResponse ): Promise<string> => { const refreshTOken = jwt.sign( { userId: user.user_id, }, process.env.REFRESH_TOKEN_SECRET, { expiresIn: `7d` } ); const status = await storeRefreshToken(user.user_id, refreshTOken); if (status) { return refreshTOken; } else { throw new Error("Error while storing refresh token"); } };

el punto final del token de actualización sería algo como esto

 authRouter.post("/refresh-token", async (request: any, response: any) => { await transformAndValidate(RefreshTokenRequestDto, request.body) .then(async (refreshTokenRequest: any) => { if (authenticateRefreshToken(refreshTokenRequest.refreshToken)) { const dbRefreshToken = await getRefreshTokenByToken( refreshTokenRequest.refreshToken ); if ( dbRefreshToken && dbRefreshToken.user_id && dbRefreshToken.active && dbRefreshToken.expiry_at >= new Date() ) { const user = await getUserById(dbRefreshToken.user_id); if (user) { const jwtToken = generateAccessToken(user); response.status(200).send( generateSuccessResponse({ accessToken: jwtToken, refreshToken: dbRefreshToken.token, fullName: user.username, }) ); } else { return response .status(400) .json( generateFailedResponse( "Invalid User", AppCodes.REFRESHTOKENFAIL ) ); } } else { return response .status(400) .json( generateFailedResponse( "Refresh Token Failed", AppCodes.REFRESHTOKENFAIL ) ); } } else { return response .status(400) .json( generateFailedResponse( "Refresh Token JWT Validation Failed", AppCodes.REFRESHTOKENFAIL ) ); } }) .catch((err) => { response .status(400) .json( generateFailedResponse( formatValidationErrorMsg(err), AppCodes.VALIDATIONFAILED ) ); }); });
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