Я пытаюсь передать параметр из одного промежуточного программного обеспечения в другое.Первое промежуточное программное обеспечение просто хранит секретный ключ в req.cookieKey.Второе промежуточное программное обеспечение использует cookie-сессию Express .Обычно я знаю, как это сделать, но что-то не работает, когда я пытаюсь вернуть cookieSession (во втором промежуточном программном обеспечении. См. Мой код ниже и пример на codeandbox.io, связанный внизу.
Это промежуточное программное обеспечение стоит первым:
const asyncMiddleware = async (req,res,next) => {
const data = await SecretKeeper.getCredentialPair('cookie');
req.cookieKey = data.credential;
next()
}
В моих маршрутах я звоню:
//get key from SecretKeeper to encrypt cookie that will be set in next middleware
app.use(asyncMiddleware);
//set cookie middleware, use key from SecretKeeper to sign and verify cookie
app.use((req, res, next) => {
return cookieSession({
name: 'MySession',
keys: [req.cookieKey],
// Cookie Options
maxAge: .30 * 60 * 60 * 1000 // 30 min
})
})
Это работает, если я не пытаюсь добавить ключ от SecretManager (первое промежуточное ПО) и удаляюдополнительный функциональный слой (req, res, next) =>
из моего второго промежуточного программного обеспечения.
Я надеялся, что смогу использовать req.cookieKey, который я установил ранее, а затем просто вернуть функцию cookieSession, но это, похоже, не работает.чтобы убедиться, что я могу получить req.cookieKey при настройке промежуточного программного обеспечения cookie, но по какой-то причине я не могу заставить cookieSession работать правильно. У кого-нибудь есть предложения? Я включил рабочую версию, не передавая здесь параметр: https://codesandbox.io/s/l2lw7499q9