Я недавно интегрировал 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')