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

305
Visualizações
Cómo pasar un parámetro adicional a pasaporte.autenticar

(Ya hago fbStrategy.passReqToCallback = true ) Estoy copiando https://scotch.io/tutorials/easy-node-authentication-linking-all-accounts-together pero quiero usar este servicio de autenticación social para múltiples aplicaciones, ej. : el que controla el sistema de calefacción, el que enciende los aspersores, etc.

Básicamente, si una de estas aplicaciones verifica con el servidor y no tiene un token correcto, se redirige a este servicio de autenticación social (social-auth). Cuando el usuario presiona los botones de inicio de sesión social, toma el parámetro de qué aplicación proviene y lo agrega como parámetro para /auth/facebook/:appid

 // send to facebook to do the authentication app.get('/auth/facebook/:appId', function(req,res,next){ passport.authenticate( 'facebook', { scope : 'email' } )(req,res,next); });

req of req,res,next es el registro de usuario serializado. En este punto, social-auth no sabe quién es el usuario.

 fbStrategy.passReqToCallback = true; passport.use(new FacebookStrategy(fbStrategy, function(req, token, refreshToken, profile, done) { var email = (profile.emails[0].value || '').toLowerCase() process.nextTick(function() {...

Una vez que se completa la autorización, quiero redirigir de nuevo a la aplicación de llamada y necesito el :appId para continuar y poder volver al sitio correcto.

Ahora, en general, funcionaría si solo hiciera que una variable como currentAppId accesible para las diversas estrategias sociales, pero si tiene varias personas que se autentican al mismo tiempo, es posible que un usuario regrese a la aplicación incorrecta o alguna otra aplicación de usuarios. Es por eso que necesito appId para viajar como parámetro para passport.authenticate . ¿Dónde debo mirar para averiguar cómo? ¿Podría envolver passport.authenticate . autenticar o modificar las cosas de otra manera?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede usar la solicitud en sí para transferir algunos parámetros adicionales desde y hacia la función de estrategia. En el siguiente ejemplo, los dos parámetros _toParam y _fromParam se utilizan para este problema.

 app.get('/auth/facebook/:appId', function(req,res,next){ req._toParam = 'Hello'; passport.authenticate( 'facebook', { scope : 'email' } )(req,res,next); }) fbStrategy.passReqToCallback = true; passport.use(new FacebookStrategy(fbStrategy, function(req, token, refreshToken, profile, done) { console.log(req._toParam); req._fromParam = 'Hello 2'; var email = (profile.emails[0].value || '').toLowerCase() process.nextTick(function() {...

Si necesita almacenar la identificación para futuras solicitudes, puede usar un mapa con el socket de la solicitud actual como clave.

about 4 years ago · Santiago Trujillo Relatório

0

En mi caso, debido al flujo de autenticación, configurar una variable en req no funcionaba.

La segunda opción, establecer passReqToCallBack: true me estaba dando muchos problemas, por lo que tampoco era una opción. Puede encontrar más información aquí .

La solución me llegó después de la respuesta que Dhiraj publicó en el hilo anterior, configuré una sola cadena en el state y pude usar la cadena en las devoluciones de llamada.

 login: (req, res, next) => passport.authenticate('google', { scope: ['profile', 'email'], state: req.query.username }, () => next())(req, res, next), onSuccess: async(req, res) => { console.log(req.query.state) },

about 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