混合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有什么区别?