Cómo pasar datos de expresar enrutador (url y cambiar al mismo tiempo)

votos
0

Por lo tanto, Im el desarrollo de esta aplicación sencilla que básicamente contendrá 3 cosas:

  1. de autenticación usando OAuth (Google)
  2. obtener algunos datos de otro software basado en
  3. lograr que los datos basados ​​en la respuesta de

Así que estoy teniendo este router por primera cosa:

# oauthcallback.js 
# I defined it in main app.js as:
# app.use('/oauthCallback', oauthCallbackRouter)

router.get('/', async (req, res, next) => {
  const code = req.query.code
  const user = await getGoogleAccountFromCode(code)

  res.locals.user = user.email
  res.redirect('/devices')
});

y el segundo enrutador para la visualización de datos reales:

# devices.js 
# I defined it in main app.js as:
# app.use('/devices', devicesRouter)

router.get('/', async (req, res, next) => {
    const freshServiceUserId = await fetchDevices(res.locals.user.email)

    res.render('devices', { devices });
});

Pero esta solución no funcionará porque la gente parece ser limpiado después de una redirección. Podría, por supuesto, usar next()en lugar de res.redirect('/devices'), y cambiar el flujo router para app.use('/oauthCallback', oauthCallbackRouter, devicesRouter) que esto mantendrá 'no tan agradable' url oauth (que me gustaría cambiar a / dispositivos).

¿Hay alguna manera mejor para navegar a una nueva URL después de la autenticación, pero sin perder los datos recibidos durante la autenticación OAuth? (Sé que podría utilizar la sesión ... pero no estoy seguro si eso es forma correcta de resolver este ... me siento como theres una manera más fácil ... ¿verdad?)

Publicado el 27/11/2018 a las 16:59
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more