Me gustaría usar MS OAuth en mi sitio web creado con Express.js.
En mi plan, las cosas serían así:
localhost/register/ .saveUninitialized of SqliteStore en true , se deben crear los datos de la sesión.localhost/register/msauth/?code=blahblah .code de la URL y la almacenará como msauth en la sesión ( req.session.msauth ), luego redirigirá al cliente a localhost/register .msauth como cadena.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 .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.