繁体   English   中英

使用MongoDB和Node.JS使用Passport-Local创建新用户

[英]Create New User with Passport-Local using MongoDB and Node.JS

这是新用户的代码:

var User = mongoose.model('User', userSchema);
var usr = new User({ username: 'bob', email: 'bob@example.com', password: 'secret' });

这是检查login的代码。

passport.use(new LocalStrategy(function(username, password, done) {
  User.findOne({ username: username }, function(err, user) {
    if (err) { return done(err); }
    if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
    user.comparePassword(password, function(err, isMatch) {
      if (err) return done(err);
      if(isMatch) {
        return done(null, user);
      } else {
        return done(null, false, { message: 'Invalid password' });
      }
    });
  });
}));

如果username不存在,则显示"Unknown user __________"

我不想说unknown user ,而是要在数据库中创建一个新用户。 我如何修改此代码来做到这一点?

如果该登录名不存在,我想用他们输入的登录信息创建一个新用户。

更新资料

我正在尝试此操作,但无法正常工作。 bob5没有保存到数据库。

passport.use(new LocalStrategy(function(username, password, done) {
  User.findOne({ username: username }, function(err, user) {
    if (err) { return done(err); }
 if (!user) { usr = new User({ username: 'bob5', email: 'bob5@example.com', password: 'secret' });
usr.save(function(err) {
  if(err) {
    console.log(err);
  } else {
    console.log('user: ' + usr.username + " saved.");
  }
});

如果键入此内容,则bob99将保存到数据库。 所以我可以创建一个用户...我只需要在if语句中传递参数给它(我认为)。

usr = new User({ username: 'bob99', email: 'bob99@example.com', password: 'secret' });
usr.save(function(err) {
  if(err) {
    console.log(err);
  } else {
    console.log('user: ' + usr.username + " saved.");
  }
});
passport.use(new LocalStrategy(function(username, password, done) {

  User.findOne({ username: username }, function(err, user) {

    if (err) { return done(err); }

    if (!user) { 
         usr = new User({ username: 'bob99', email: 'bob99@example.com', password: 'secret' });
         usr.save(function(err) {
         if(err) {
               console.log(err);
         } else {
               console.log('user: ' + usr.username + " saved.");
         }
      });

    }

    user.comparePassword(password, function(err, isMatch) {
      if (err) return done(err);
      if(isMatch) {
        return done(null, user);
      } else {
        return done(null, false, { message: 'Invalid password' });
      }
    });
  });
}));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM