2017-10-07 5 views
0

Sur mon formulaire de connexion, je n'ai que les champs de saisie "email" et "mot de passe". Passport local attend un nom de nom d'utilisateur et lance un [MissingUsernameError: aucun nom d'utilisateur n'a été donné]. Est-il possible de laisser le passeport local ne pas s'attendre à un nom d'utilisateur?Passeport local mongoose: aucun nom d'utilisateur n'a reçu d'erreur

+0

Oui il y a. Utilisez-vous un courriel à la place du nom d'utilisateur? –

+0

Oui en utilisant l'email à la place. – Jon

Répondre

0

Si vous souhaitez utiliser l'adresse e-mail au lieu du nom d'utilisateur, vous devez en informer le passeport. Pour ce faire, veuillez consulter l'extrait de code suivant:

passport.use(new LocalStrategy({ 
      usernameField: 'email', // this is where you do that 
      passwordField: 'password' 
     }, 
     (email, password, done) => { 
      User.findOne({ 
       email: email 
      }, (error, user) => { 
       if (error) { 
        return done(error); 
       } 
       if (!user) { 
        return done(null, false, { 
         message: 'Username or password incorrect' 
        }); 
       } 


       // Do other validation/check if any 

       return done(null, user); 
      }); 
     } 
    )); 
+0

J'ai compris. Également nécessaire pour modifier var newUser = new User ({nom d'utilisateur: req.body.email ....}); dans la route du poste d'inscription. Merci beaucoup! – Jon