Почему моя переменная экспресс-сеанса возвращает 'undefined' по другому маршруту? - PullRequest
0 голосов
/ 02 июня 2019

У меня есть простая форма входа в систему, которая устанавливает сеанс после успешного входа в систему

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), он возвращает 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('/');
  }
});

Кто-нибудь видит, что я делаю неправильно?Вот?Также стоит отметить, что он возвращает правильное значение внутри /.

1 Ответ

0 голосов
/ 02 июня 2019

Оказывается, это не сработало, потому что я установил cookie.secure на true. Но это работает только на сайтах https, хотя я тестирую это на моем локальном хосте. Таким образом, решение так же просто, как установка secure: false.

...