使用 passport.js 注册用户还是手动创建用户?

Use passport.js for register users or manually create them?

在互联网上,很多人都在使用本地策略在 Passport 中执行 "Signup" 方法。但是,这与手动在数据库中创建记录相比有什么优势吗?

我想说的是,如果我们使用 passport 策略来做这件事,我们可以这样做:

passport.use('local-signup', new LocalStrategy({
  usernameField: 'email',
  passwordField: 'password',
  passReqToCallback: true
}, (req, email, password, done) => {
    User.findOne({
      email: email
    })
    .then(user => {
      if (user) {
        return done(null, false);
      } else {
        User.create(req.body)
        .then(userCreated => {
          return done(null, userCreated);
        })
        .catch(err => {
          return done(err)
        });
      }
    })
    .catch(err => {
      return done(err)
    });
  }
));

但这真的需要吗?或者我们可以这样创建我们的用户吗? (使用 Bookshelf.js):

 this.model.findOne({
   email: email
 })
 .then(user => {
   if (user) {
     res.status(403).json({
       message: 'Email not available.'
     });
   } else {
     User.create(req.body)
     .then(userCreated => {
       res.status(201).json(userCreated);
     })
     .catch(err => {
       next(err);
     });
   }
 })
 .catch(err => {
   next(err);
 });
}

首先要明确什么是Passport.js:

"Passport is authentication middleware for Node" (http://www.passportjs.org/docs/)

您可以像这样创建用户,然后使用您的代码处理其余的登录过程。

但是,当您的身份验证规则变得更加复杂(而且它们会)时,Passport.js 就变得很方便了。

使用它,您无需浪费时间创建代码来处理访问限制、API 曝光等。Passports.js 会为您处理所有这些。因此,您可以专注于应用程序的其他实现细节。