Redirección incorrecta en el pasaporte. js google login

Tengo un problema con google auth usando passport.js, a veces puedo registrarme o entrar sin un problema y a veces estoy redireccionado a /login Una vez que estoy autenticado, el problema es en el middleware sin él no tengo este problema.

He establecido esta estrategia de inicio de sesión de pasaporte google

passport.use(new GoogleStrategy({
    clientID: config.google_consumer_key,
    clientSecret: config.google_consumer_secret,
    callbackURL: config.google_callback,
    passReqToCallback: true
  },
  async function(req, accessToken, refreshToken, profile, done) {
    await User.findOrCreate({ 
        email: profile.email, 
        username:`${profile.given_name} ${profile.family_name}` 
    },async function (err, user) {
      user.connected = true;
      await user.save();
      return done(err, user);
    });
  }
));

y estas rutas para firmar y el callback

router.get('/google-signin',
  passport.authenticate('google', 
    { scope:[ 'email', 'profile' ]}
));

router.get( '/google-callback',
    passport.authenticate( 'google', {failureRedirect: '/login'}),
    function(req,res){
        res.redirect('/');
    }
);

En el éxito el usuario se redirige a '/' y esta ruta tiene un middleware, comprobé isAuthenticated y parece ser correcto, pero si no funciona parece que no pasa tropiezo el middleware

var isAuthenticated = function (req, res, next) {
    if(!req.isAuthenticated()) 
      return res.redirect(301,'/login');
    return next();
};

  module.exports = isAuthenticated;

Cuando falla, estoy redireccionado a '/login' con 304 código enter image description here

Pregunta hecha hace 3 años, 4 meses, 26 días - Por pixelpioneerbbb5


2 Respuestas:

  • El problema que estás experimentando parece estar relacionado con la autenticación y la redirección en tu aplicación utilizando passport.js con Google login. Aquí hay algunas sugerencias para solucionar este problema:

    • Asegúrate de que la URL de tu callback en la configuración de Google Developer Console coincida con la URL especificada en tu código (config.google_callback).
    • Verifica que estás manejando correctamente las respuestas de éxito y fracaso en tu ruta de callback de Google. En este caso, estás redirigiendo al usuario a '/login' en caso de fracaso, por lo tanto, si hay algún error en la autenticación, el usuario será redirigido a '/login'.
    • En la estrategia de autenticación de Google, asegúrate de que la función done se llama de manera adecuada en caso de éxito o fracaso. Podrías incluir un manejo de errores adecuado para garantizar que cualquier error sea capturado y manejado correctamente.
    • Verifica que el middleware 'isAuthenticated' esté siendo llamado correctamente en la ruta a la que estás intentando acceder después de la autenticación. Puedes agregar un console.log para verificar si el middleware se está ejecutando como se espera.
    • También puedes intentar agregar un console.log dentro de la función de redirección de '/login' para verificar si se está ejecutando correctamente o si hay algún problema en ese punto específico.

    Intenta realizar estos pasos y prueba nuevamente tu aplicación para ver si el problema persiste. Si necesitas más ayuda, no dudes en proporcionar más información o detalles sobre el problema específico que estás enfrentando.

    Respondida el Dec 20, 2020 a las 18:48 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Basado en la información proporcionada, parece que podrías estar experimentando problemas de redirección incorrecta al utilizar Google Auth con Passport.js. Aquí hay algunos pasos para solucionar problemas que puedes seguir:

    • Verifica la configuración de Passport.js: Asegúrate de que la configuración de Passport.js (clientID, clientSecret, callbackURL) esté configurada correctamente para tu aplicación y coincida con la configuración en la consola de Google Developers.
    • Revisa las rutas: Comprueba que las rutas para el inicio de sesión y la devolución de llamada estén definidas correctamente y se manejen según lo previsto. Verifica que la ruta de devolución de llamada redirija a la ruta deseada después de una autenticación exitosa.
    • Depura el middleware de autenticación: Agrega registros o puntos de interrupción al middleware de autenticación (`isAuthenticated`) para verificar si se está llamando correctamente y si la autenticación está fallando. Asegúrate de que el middleware esté aplicado a las rutas donde se requiere autenticación.
    • Examina los códigos de estado de respuesta: El código de estado de respuesta `304` indica que el recurso no ha sido modificado desde la solicitud anterior. Esto sugiere que el middleware de autenticación está devolviendo una respuesta en caché, lo que podría provocar problemas de redirección. Intenta deshabilitar el almacenamiento en caché en el middleware o la aplicación para ver si resuelve el problema.
    • Habilita el modo de depuración de Passport.js: Para obtener más información de depuración, configura Passport.js en modo de depuración estableciendo `debug: true` en las opciones de configuración de Passport. Esto proporcionará registros adicionales que pueden ayudar a identificar el problema.
    • Verifica las sesiones: Asegúrate de que las sesiones estén habilitadas y funcionando correctamente en tu aplicación. Los problemas con las sesiones pueden provocar problemas de redireccionamiento después de la autenticación.
    • Revisa los permisos del usuario: Verifica que el usuario que intenta iniciar sesión tenga los permisos necesarios para acceder a las rutas protegidas por el middleware de autenticación.

    Si sigues teniendo problemas, puedes proporcionar más información sobre el entorno del servidor, los mensajes de error o los registros relevantes que ayudarán a diagnosticar el problema con mayor precisión.

    Respondida el Dec 20, 2020 a las 18:52 - por Gemini

    Votos positivos: 0 | Votos negativos: 0