Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
¿Cómo almacenar el parámetro de URL en el almacén de sesiones en Express.js?

Me gustaría usar MS OAuth en mi sitio web creado con Express.js.

En mi plan, las cosas serían así:

  1. El cliente visita localhost/register/ .
    En este punto, dado que configuré saveUninitialized of SqliteStore en true , se deben crear los datos de la sesión.
  2. El cliente hace clic en el botón 'Iniciar sesión con MS'.
    Redirigirá al cliente a la pantalla de inicio de sesión de MS y volverá a localhost/register/msauth/?code=blahblah .
  3. El servidor obtendrá una parte del code de la URL y la almacenará como msauth en la sesión ( req.session.msauth ), luego redirigirá al cliente a localhost/register .
    En este punto, los datos de la sesión tienen msauth como cadena.
  4. Dado que hay msauth en los datos de la sesión, cuando el usuario es 'redireccionado' a localhost/register/ , el servidor obtendrá msauth de los datos de la sesión y lo pasará con otras options .
    Uso pug como 'motor de plantilla', puedo acceder a msauth en .pug y hacer algo con él. Actualmente, dado que esta es la etapa de desarrollo, solo muestro el código de autenticación en el sitio web.

Entonces, cuando el cliente visita localhost/register/ , habría dos casos de si msauth está presente o no.

Este es mi código actual:

 // routes/register.js ... router.get('/', function (req, res) { let options = default_options; // Don't care about default_options, it's just predefined options object. if (res.sessions === undefined) { console.log('\x1b[36m%s\x1b[0m', 'session is undefined'); options['MSAuthCode'] = null; res.render('register', options); } else { console.log('\x1b[36m%s\x1b[0m', 'session is valid'); console.log(res.sessions); if ('msauth' in res.sessions) { options['MSAuthCode'] = res.sessions.msauth; console.log('msauth is ' + options.MSAuthCode); } res.render('register', options); } }); router.get('/msauth/', function (req, res) { console.log('\x1b[36m%s\x1b[0m', req.query.code); req.session.msauth = req.query.code; res.redirect('/'); }); ...

Esperaba que cuando visite localhost/register/msauth/?code=1000 después de visitar localhost/register , no crearía una nueva sesión y guardaría 1000 en msauth en los datos de la sesión.

Pero parece que solo crea una nueva sesión. 'la sesión no está definida' se imprime en la consola en cada actualización. Así que tengo dos sesiones en Sqlite3 DB. Uno son datos de sesión sin msauth y otro con msauth . Esto no debería pasar en mi 'teoría'...

No entiendo lo que está mal con mi código.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda