为什么我的 express-session 变量 return 'undefined' 在不同的路线上?

Why does my express-session variable return 'undefined' on a different route?

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

router.post('/', (req, res) => {
  const { username, password } = req.body;

  // TODO: Hash password
  if (username === 'admin' && password === 'test') {
    req.session.user = username;
    res.redirect('/dashboard');
  } else {
    // TODO: Validation
  }
});

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

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

设置 session.user 后,路由器重定向到 /dashboard,但是当我尝试 console.log(req.session.user) 时,它 returns 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('/');
  }
});

有人看到我做错了什么了吗?可能还值得注意的是,它 return 在 /.

中的正确值

原来它不起作用,因为我将 cookie.secure 设置为 true。但这只适用于 https 站点,尽管我正在我的本地主机上测试它。所以解决方案就像设置 secure: false.

一样简单