Могу ли я десериализовать разных пользователей, таких как студент и администратор, в паспорте. js? - PullRequest
0 голосов
/ 04 апреля 2020

В паспорте js аутентификация при десериализации пользователя у меня возникают следующие сомнения?

Могу ли я использовать разные таблицы входа в систему для выборки пользователя? (Зависит от того, являются ли они админом или студентом) попытался реализовать это с помощью оператора if, который не сработал, что означает, что он не может извлечь из базы данных Чем я занимаюсь, что помогу!

1 Ответ

0 голосов
/ 04 апреля 2020

Используя LocalStrategy вы можете использовать его. Здесь нужно сделать два разных звонка, чтобы проверить.

Пример:

passport.use(new LocalStrategy(
  function(username, password, done) {
    async.parallel([
      function(cb){
        User.findOne({ username: username }, function (err, user) {
          if (err) { return done(err); }
          if (!user) { return done(null, false); }
          if (!user.verifyPassword(password)) { return done(null, false); }
          return cb(null, user);
        });
      },
      function(cb){
        Admin.findOne({ username: username }, function (err, user) {
          if (err) { return done(err); }
          if (!user) { return done(null, false); }
          if (!user.verifyPassword(password)) { return done(null, false); }
          return cb(null, user);
        });
      }
    ], ([res1, res2]) => {
      // on result 
      done(null, res1)
      // OR
      done(null, res1)
    })

  }
));
...