2016-11-15 105 views
1

看着互聯網,很多人都在使用本地策略在Passport內部執行「註冊」方法。但是,在手動創建數據庫中的記錄之間有這種優勢嗎?使用passport.js註冊用戶或手動創建它們?

我想是說,如果我們使用的護照這樣做的策略,我們可以這樣做:

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); 
}); 
} 
+0

通常passportjs用於身份驗證目的,如果您想進一步創建用戶(如果他沒有註冊),則取決於您的應用程序。 – bpinhosilva

回答

0

首先,讓我們來明確界定什麼是Passport.js:

「護照是節點認證中間件」(http://passportjs.org/docs/overview

您可以像這樣創建用戶,然後使用代碼處理登錄過程的其餘部分。

但是,當您的身份驗證規則變得更復雜(並且他們會)時,Passport.js就變得非常方便。

使用它,您不需要浪費時間創建代碼來處理訪問限制,API暴露等.Passports.js爲您處理所有這些事情。因此,您可以專注於應用程序的其他實現細節。