Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

269
Visualizações
No se establece ninguna cookie de usuario al usar el inicio de sesión de Facebook, Passport, Express, React y Node

Actualmente estoy en el proceso de agregar autenticación a una aplicación React/Redux/Express bastante grande, pero la cookie de usuario nunca se configura.

Estoy usando sesiones de cliente para almacenar la cookie, ya que no tengo intención de crear una base de datos o similar para el almacenamiento (probé una implementación de sesión rápida, pero la tienda predeterminada no debe usarse para entornos de producción).

Por lo que puedo decir, las sesiones de pasaporte + cliente deberían funcionar, siempre que el nombre de la cookie de sesiones de cliente esté configurado como "usuario", pero nunca se almacena nada. Sin embargo, no creo que las sesiones de cliente sean mi problema actual, ya que Passport. SerializeUser nunca se dispara, aunque el inicio de sesión de Facebook regresa con éxito (agrega un gran /?code = cadena muy larga a la URL al regresar).

O simplemente pasé por alto algún detalle, o hay un problema oculto en la configuración de React/Redux que causa esto (por ejemplo, estoy usando React Router para todas mis rutas, excepto las que se mencionan en el ejemplo a continuación).

El botón de inicio de sesión es bastante simple:

 <div><a href="/auth/facebook">Login with Facebook</a></div>

Eliminé la gran mayoría del contenido de mi archivo server.jsx, pero conservé el código relevante:

 /* Lots of other imports .... .... .... */ import express from 'express'; import passport from 'passport'; import strategy from 'passport-facebook'; import sessions from 'client-sessions'; const app = express(); // Facebook strategy passport.use(new strategy.Strategy({ clientID: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, callbackURL: 'http://localhost:8081/', passReqToCallback: true }, function(accessToken, refreshToken, profile, cb) { return cb(null, profile); })); // Serialize passport user passport.serializeUser(function(user, cb) { console.log("SERIALIZE"); cb(null, user); }); // Deserialize passport user passport.deserializeUser(function(obj, cb) { console.log("DESERIALIZE"); cb(null, obj); }); // Client-sessions app.use(sessions({ cookieName: 'user', secret: 'thisisjustatest', duration: 24 * 60 * 60 * 1000, activeDuration: 1000 * 60 * 5 })); // Facebook authentication paths app.get('/auth/facebook', passport.authenticate('facebook')); app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/', failureRedirect: '/' })); app.use(passport.initialize()); app.use(passport.session()); app.enable('trust proxy'); app.use((req, res) => { console.log(req); /* A lot of code .... .... .... */ }

¿Algún consejo? Soy consciente de que la estrategia personalizada requiere un inicio de sesión manual para llamar, pero solo estoy usando la estrategia de Facebook, por lo que estoy algo perdido aquí.

Editar: sospecho que podría deberse a cómo se divide la aplicación en front-end (app.js) y back-end (server.js). No estoy seguro de cómo evitarlo sin una reescritura bastante grande.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Parece que olvidé verificar dos veces mis URL. La solución es bastante simple: la URL de devolución de llamada debe coincidir con la devolución de llamada del pasaporte, por lo que en este caso debería ser http://localhost:8081/auth/facebook/callback .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda