混合passport-facebook和passport-jwt的最佳方法是什么?

我对Node.js的开发很陌生,目前正忙于在空闲时间开发一个宠物项目。

到目前为止,我已经使用passport和passport-jwt为策略创build了JWT身份validation,并将其用于所有RESTful API。

现在我正在考虑将这个与某种Facebook身份validation混合在一起,仍然想要使用令牌身份validation。

目前这是我如何产生和获得令牌:

exports.authenticate = function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) return res.status(400).send(getErrorMessage(err)); if (!user) { res.status(400).send({ success: false, message: 'Authentication failed. User not found.' }); } else { if (user.checkPassword(req.body.password)) { let token = jwt.encode(user, config.secretPhrase); res.json({ success: true, token: 'JWT ' + token }); } else { res.status(401).send({ success: false, message: 'Authentication failed. Wrong password.' }); } } }); }; app.route('/api/users/authenticate') .post(user.authenticate); 

并validation我做了以下几点:

 let user = require('../../app/controllers/user-controller'); app.route('/api/todos') .get(user.validateLogin, todos.list) .post(user.validateLogin, todos.create); 

用户控制器:

 exports.validateLogin = passport.authenticate('jwt', { session: false }); 

任何人都可以build议一个干净的方法来混合这两种策略? 我应该使用express-jwt吗? express-jwt和passport-jwt有什么区别?