2017-10-07 4 views
0

Auf meinem Frontend-Login-Formular habe ich nur die Eingabefelder "email" und "password". Passport local erwartet einen BenutzernamenField name und wirft einen [MissingUsernameError: Kein Benutzername wurde angegeben]. Gibt es eine Möglichkeit, den Pass lokal nicht mit einem Benutzernamen zu erwarten?Passport local mongoose: Es wurde kein Benutzername angegeben Fehler

+0

Ja, es gibt. Verwenden Sie anstelle des Benutzernamens E-Mail? –

+0

Ja, stattdessen E-Mail verwenden. – Jon

Antwort

0

Wenn Sie die E-Mail-Adresse anstelle des Benutzernamens verwenden möchten, müssen Sie dem Pass das mitteilen. Sehen Sie dazu bitte das folgende Code-Snippet:

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

Verstanden. Wird auch benötigt, um var newUser = new User ({username: req.body.email ....}) zu ändern; in der Anmeldepost-Route. Danke vielmals! – Jon

Verwandte Themen