Express req.session устанавливается, а затем очищается при попытке POST - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть приложение для блога MERN, которое я создаю в качестве учебного упражнения.Я относительно удобен на переднем крае, но у меня ограниченный опыт в узле.Я добавляю аутентификацию после нескольких уроков, чтобы пройти этот путь.Я использую passport.js в качестве фреймворка для отправки запроса в Google, получения идентификатора и сохранения информации о сеансе.Однако после входа в систему req.session становится пустым при отправке запроса на публикацию, даже если я вижу cookie в инструментах разработчика.

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

в blogAuth.js: определение req.session.

bcrypt.hash(req.user._id.toString(), saltRounds, function(err, hash) { req.session.user = hash; //session is set here. console.log(req.session); res.redirect(http://localhost:8080/articles/loggedIn);});

, нов api / article.js: req.session пуст

router.post("/", (req, res, next) => { const { body } = req; // session is empty here. Why? console.log( Пользователь сеанса, $ {req.session.user} ); console.log(req.session);

Я пытался:

  • Включение прокси в клиентском package.json: express req.session empty с cookie-сессией

    с использованием withCredentials, установленным в true при отправке POST от клиента: Узел + Экспресс + Паспорт: req.user Undefined

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

Вот некоторые из соответствующих файлов:

Сторона сервера: - app.js - blogAuth.js - passport.js - api / article.js

Сторона клиента: - требование POST

Весь проект

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

1 Ответ

0 голосов
/ 18 ноября 2018

Вы пытаетесь использовать cookie-session, а также express-session.Поскольку оба они будут пытаться контролировать судьбу объекта req.session, вы всегда будете иметь пустой сеанс.

Просто удалите один из них, и ваш сеанс будет сохранен.

...