Как передать данные на Express-роутер (и изменить URL-адрес одновременно) - PullRequest
0 голосов
/ 27 ноября 2018

Итак, я разрабатываю это простое приложение, которое в основном будет содержать 3 вещи:

  1. аутентификация с использованием OAuth (google)
  2. получение некоторых данных из другого программного обеспечения на основе
  3. рендеринг данных на основе ответа от

Итак, у меня есть этот маршрутизатор для первого:

# 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), но это сохранит «не очень хороший» URL-адрес oauth (который я хотел бы изменить на / devices).

Есть ли какой-нибудь лучший способ перейти к новому URL после аутентификации, но без потери данных, полученных во время аутентификации OAuth?(Я знаю, что могу использовать сессию ... но я не уверен, что это правильный способ решить эту проблему ... Я чувствую, что есть более простой способ ... есть?)

...