Сессии не являются постоянными при использовании Nodejs Server - PullRequest
0 голосов
/ 14 апреля 2020

Я создаю REST API, используя NodeJS и MongoDB в качестве базы данных.

Я использую passport для обработки аутентификации.

Мне интересно, почему сеансы не постоянны! Кроме того, почему десериализация никогда не вызывается!

passport.serializeUser(function (user, done) {
  done(null, user._id);
});

passport.deserializeUser(function (id, done) {
  User.findById(id, function (err, user) {
    console.log(user, "deserialization"); // --> Never invoked!
    done(err, user);
  });
});

passport.use(User.createStrategy());

app.use(
  session({
    secret: process.env.SECRET,
    resave: false,
    saveUninitialized: false,
    store: new MongoStore({ mongooseConnection: mongoose.connection }) // --> Sessions has been saved to database after each login or register
  })
);
app.use(passport.initialize());
app.use(passport.session());

exports.getRestaurants = async (req, res) => {
  console.log(req.session); // --> Not contains any user info
  console.log(req.user); // -->undefined and this is my problem
  const restaurants = await liveRestaurants.find().sort({ rate: -1 });
  if (!restaurants) return next();
  res.status(200).json({ restaurants });
};

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

  • app.use должен быть в правильном порядке
  • порт localhost влияет на него "как я читаю"
  • cluster
  • и другие
...