Express会话不保留我保存的数据

时间:2020-02-01 22:01:23

标签: node.js express express-session

我正在尝试在服务器上的会话中保存一些数据,每条路由都将使用该数据将分析数据发送到另一个微服务。

因此,我正在接收一些数据,并创建了一个中间件,该中间件将使用所需的数据获取令牌。所以在我的主文件上有这个:

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()
}

如您所见,我只希望中间件在到达首页时保存会话,因为我只打开首页上的令牌。 所以我要在会话中保存一个phoneNumber。 但是,当我尝试打路线时:

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。有人知道为什么吗?

这是服务器端的反应应用程序。

0 个答案:

没有答案