2017-10-07 69 views
0

在我的前端登录表单上,我只有输入字段“email”和“password”。本地护照需要一个usernameField名称并引发[MissingUsernameError:没有给出用户名]。有没有什么办法让护照本地不期望一个usernameField?护照本地猫鼬:未给出用户名错误

+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