Паспорт возвращает "имя пользователя не задано", когда для "usernameField" установлено значение "email" - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь использовать passport-local-mongoose для аутентификации пользователя в экспресс-приложении, но я хочу использовать электронную почту вместо имени пользователя, поэтому после некоторых исследований я обнаружил, что паспорт предоставляет способ сделать это, выполнив что-то подобное:

passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password'
  },  
  function(username, password, done) {
    User.findOne({ username: username }, function(err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect email.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
  }
));
passport.use(LocalStrategy);
User.authenticate();
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

Но я все еще получаю сообщение об ошибке "имя пользователя не задано", и оно не сохранит пользователя в базе данных.

1 Ответ

0 голосов
/ 28 сентября 2018

Решено с помощью

passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password'
  },  
  User.authenticate()
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...