2017-10-07 15 views
0

私のフロントエンドのログインフォームには、 "email"と "password"という入力フィールドしかありません。 Passport localはusernameField名を想定し、[MissingUsernameError:No username was given]をスローします。パスポートがusernameFieldを期待しないようにする方法はありますか?Passport local mongoose:ユーザー名が入力されていません

+0

はいあります。あなたはユーザー名の代わりに電子メールを使用していますか? –

+0

はい、代わりに電子メールを使用します。 – Jon

答えて

0

ユーザー名の代わりに電子メールアドレスを使用する場合は、パスポートにその旨を伝える必要があります。これを行うには、次のコードスニペットを参考にしてください。

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

入手しました。 var newUser = new User({username:req.body.email ....})を変更する必要もあります。サインアップのポストルート。どうもありがとう! – Jon

関連する問題