如何将数据传递到Express路由器(并同时更改url)

时间:2018-11-27 16:59:20

标签: node.js express redirect routing

因此,我正在开发这个简单的应用程序,该应用程序将基本上包含3个内容:

  1. 使用OAuth(google)进行身份验证
  2. 基于
  3. 从其他软件获取一些数据
  4. 根据来自...的响应呈现数据

所以我首先要拥有这个路由器:

# 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')
});

和第二个用于显示实际数据的路由器:

# 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 });
});

但是该解决方案无法正常工作,因为重定向后似乎清除了本地人。我当然可以使用next()代替res.redirect('/devices'),并将路由器流更改为app.use('/oauthCallback', oauthCallbackRouter, devicesRouter) 但这会保留“不太好”的oauth网址(我想更改为/ devices)。

在进行身份验证后,有没有更好的方法可以导航到新的url,但又不会丢失在OAuth身份验证期间收到的数据? (我知道我可以使用会话...但是我不确定这是否是解决此问题的正确方法...我觉得有一种更简单的方法...在那里吗?)

0 个答案:

没有答案