Итак, я разрабатываю это простое приложение, которое в основном будет содержать 3 вещи:
- аутентификация с использованием OAuth (google)
- получение некоторых данных из другого программного обеспечения на основе
- рендеринг данных на основе ответа от
Итак, у меня есть этот маршрутизатор для первого:
# 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?(Я знаю, что могу использовать сессию ... но я не уверен, что это правильный способ решить эту проблему ... Я чувствую, что есть более простой способ ... есть?)