Паспорт js Сессии не работают; req.user неопределен при последующих запросах - PullRequest
1 голос
/ 04 мая 2020

Я недавно интегрировал Passport js в свое приложение, но изо всех сил пытаюсь настроить сеансы входа в систему. При входе в систему serializeUser вызывается правильно и присутствует req.user. Однако при любом последующем запросе от браузера req.user возвращает значение undefined, а deserializeUser не вызывается.

При тестировании с почтальоном все работает нормально, и запросы могут нормально обращаться к req.user. Это наводит меня на мысль, что паспорт правильно настроен в бэк-энде, и проблема заключается в CORS или некоторой настройке express. Ниже приведено описание того, что мне нужно делать с CORS.

  res.header('Access-Control-Allow-Credentials', true);
  res.header('Access-Control-Allow-Origin', req.headers.origin);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');

  if ('OPTIONS' == req.method) {
      res.sendStatus(200);
  } else {
      next();
  }
});

Я довольно новичок в CORS и работаю с сеансами входа в систему, поэтому я могу упустить что-то невероятно простое. Я проверил подобные посты здесь, но не нашел решения, которое работает для меня.

Поскольку я использую authenticate () в качестве промежуточного программного обеспечения, я не думаю, что мне нужно вызывать req. логин (я пробовал вручную вызывать его просто чтобы проверить). Я также пытался использовать пакет cors npm и cookiesessions, но ни один из них не решил проблему.

Я думаю, что это может быть проблема с cookie, хотя я не уверен, как это проверить. Для справки, я делаю топор ios запросов с отправляемыми учетными данными.

Вот мое полное репо, если кто-то хочет заглянуть (в ветке Login-Backend): https://github.com/SabrinaSnider/Chow

Спасибо за любую помощь!

Редактировать:

Я использую express -сессию, упакованную для обработки сессий. Вот код, который я использую для сессионных вещей. В «./config/passport» у меня есть методы localstrateg и serialize / deserialize.

var session = require("express-session")

/* --- Passport setup --- */
app.use(session({
  secret: global.config.session.secret,
  resave: false,
  saveUninitialized: true
}));

// passport inits
app.use(passport.initialize());
app.use(passport.session());

// passport strategy
require('./config/passport')
...