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

249
Vistas
How to create session in nodejs + react

I am working on react front end app and middleware is written in nodejs. I am using oauth access token which expires in 3600 ms so i need to create session for 7 days so user wont be logout before 7 days.

What is the way to create session ? Do I need to do in react app or node js app ?

PS We do not wat to implement refresh token approach. Any way to setup session and valid for 7 days ?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

You can use an access token + refresh token to achieve this. Use shorter access tokens and keep 7d expiry for the refresh token.

Upon the expiry of the access token, you can refresh it by passing the refresh token. This will work till your refresh token expiry is 7 days. Then the user has to log in again.

Something like the following.

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");
  }
};

refresh-token endpoint would be something like this

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 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