Получение «Ошибка: не удалось сериализовать пользователя в сеанс» при первом входе пользователя в систему. - PullRequest
0 голосов
/ 07 мая 2020

Я использую паспорт-ldapauth для аутентификации ldap. В первый раз, когда любой действительный пользователь (который был определен в ldap) входит в систему, он выдает сообщение «Ошибка: не удалось сериализовать пользователя в сеанс». Последующие попытки входа в систему от того же пользователя являются успешными. Я вижу, что база данных успешно хранит информацию о пользователе, но не уверен, почему serializeUser дает сбой в первый раз, любой пользователь входит в систему.

serializeUser и deserializeUser определены следующим образом.

passport.serializeUser((user, done) => {
  done(null, user.id);
});

passport.deserializeUser((id, done) => {
  const user = db.get('users').find({id: id}).value()
  done(null, user)
});


app.post('/login', (req, res, next) => {

  passport.authenticate('ldapauth', (err, user, info) => {
    if (err) {
      return next(err)
    }

    if (!user) {
      const msg = info.message
      return res.redirect('login?info=' + msg)
    }

    if (user.memberOf.includes('Admins')) {
      req.logIn(user, (err) => {
        if (err) {
          return next(err)
        }

        return res.redirect('/tool')
      })
    }

    if (!user.memberOf.includes('Admins')) {
      return res.send('You do not have the necessary privileges to access this')
    }

  })(req, res, next);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...