为什么我的express-session变量在不同的路由上返回“ undefined”?

时间:2019-06-01 21:02:41

标签: node.js express express-session

我有一个简单的登录表单,可以在登录成功后设置会话

router.use(sessions({
  secret: 'supersecret',
  resave: false,
  saveUninitialized: false,
  cookie: {
    sameSite: true,
    secure: true,
    expires: false
  }
}));

在此之前,我设置了中间件:

session.user

设置/dashboard后,路由器将重定向到console.log(req.session.user),但是当我尝试访问undefined时,它将返回req.session,尽管router.get('/dashboard', (req, res) => { console.log(req.session.user); if (req.session.user) { Product.find({}, (e, products) => { if (e) console.error(e); res.render('dashboard', { products: products }); }); } else { res.redirect('/'); } }); 不会。 t。

/

有人在这里看到我在做什么错吗?可能还值得注意的是,它确实在tabBox( title = mytitle, id = myid, width = "8", tabPanel(myTitle[1], icon = icon("adjust"), plotOutput(myPlot[1])), tabPanel(myTitle[2], icon = icon("adjust"), plotOutput(myPlot[2])), tabPanel(myTitle[3], icon = icon("adjust"), plotOutput(myPlot[3])), tabPanel(myTitle[4], icon = icon("adjust"), plotOutput(myPlot[4])) ) 内部返回了正确的值。

2 个答案:

答案 0 :(得分:0)

结果证明它无效,因为我将cookie.secure设置为true。但这仅适用于https站点,尽管我正在本地主机上对其进行测试。因此,解决方案就像设置secure: false一样简单。

答案 1 :(得分:0)

router.use(sessions({
  secret: 'supersecret',
  resave: false,
  saveUninitialized: false,
  cookie: {
    sameSite: true,
    secure: false,
    expires: false
  }
}));