Express сеанс не сохраняет данные, которые я сохранил - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь сохранить некоторые данные в сеансе на моем сервере, которые каждый маршрут будет использовать для отправки аналитических данных в другой микросервис.

Итак, я получаю некоторые данные и создал промежуточное программное обеспечение, которое получит токен с нужными мне данными. так что в моем основном файле у меня есть это:

app.use(session({
  secret: config.SERVER_SESSION_SECRET,
  resave: true,
  saveUninitialized: false,
  cookie: { secure: false }
}))
app.use(middlewares.authenticator)

внутри промежуточного программного обеспечения У меня есть:

module.exports = (req, res, next) => {
    if(req.path === '/'){
      const { headers: { accesstoken } } = req
      if (accesstoken) {
          const tokenWithoutBearer = accesstoken.split(' ')[1]
          const { msisdn } = jwt.verify(tokenWithoutBearer, formatKey(PUBLIC_KEY), {  format: 'PKCS8', algorithms: ['RS256'] })
          req.session.phoneNumber = msisdn
          req.session.save((err) => err 
          ? console.error('error saving session: ', err ) 
          : console.log('session saved successfully!'))
      } 
    }
    next()
}

, как вы можете видеть, я хочу, чтобы промежуточное программное обеспечение сохраняло сеанс только тогда, когда оно достигает домашняя страница, так как я получаю токен только на домашней странице. Поэтому я сохраняю номер телефона в сеансе. Однако, когда я пытаюсь выбрать маршрут:

articles.get('/articles/:identifier', async (request, response) => {
  try {
    console.log(request.session) // cookie:{ path: '/', _expires: null, originalMaxAge: null, httpOnly: true, secure: false } }
    const { hash, headers, params, session: { phoneNumber = '' } } = request
    const { host } = headers
    response.send('test')
  } catch (error) {
    console.error(error)
    response.redirect('/')
  }
})

Но на других маршрутах он никогда не возвращает phoneNumber, который я установил ранее. Кто-нибудь знает почему?

Кстати, это приложение на стороне сервера.

...