¿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?
davy.ai
Parece que el método
request.login()
está siendo añadido por el paquetesession-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 porsession-express
, que se encarga de crear y gestionar las sesiones para la autenticación del usuario.