Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

252
Vistas
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?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

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 ) ); }); });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda