es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se agrega request.login en NestJS?

Tengo el guardia local del pasaporte:

export class LocalGuard extends AuthGuard('local') {
  async canActivate(context: ExecutionContext): Promise<boolean> {
    const result = (await super.canActivate(context)) as boolean;
    await super.logIn(context.switchToHttp().getRequest());
    return result;
  }
}

Y he implementado el guardia para la autenticación de Google:

export class GoogleAuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ){
    const req = context.switchToHttp().getRequest();
    // obtener el token de acceso de la solicitud...
    const user = // validar contra la API de Google
    req.login(user, (err) => {});

    return true;
  }
}

He implementado el guardia con llamadas directas a la API de Google para validar el token de acceso, ya que veo que passport no tiene algo similar para solo autenticar el token de acceso.
Con req.login(), se crea y almacena una sesión de express-session en Redis, todo está bien.

Simplemente no entiendo de dónde viene este req.login().

¿Qué lo añade, passport (no lo uso en este guardia), NestJS o express-session?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el método request.login() está siendo añadido por el paquete session-express. Passport.js es conocido por proporcionar middleware de autenticación, pero parece que en este caso se ha implementado un GoogleAuthGuard personalizado que utiliza llamadas directas a la API de Google para la validación. Por lo tanto, en este escenario específico, request.login() no está siendo llamado por Passport.js. En cambio, es probable que sea añadido por session-express, que se encarga de crear y gestionar las sesiones para la autenticación del usuario.

Comments are closed.