【发布时间】:2016-08-14 20:51:31
【问题描述】:
我是 Node.js 开发的新手,目前在空闲时间从事一个宠物项目。
到目前为止,我已经使用 passport 和 passport-jwt 为该策略创建了 JWT 身份验证,并且我在所有 RESTful API 中都使用了它。
现在我正在考虑将其与某种 Facebook 身份验证混合使用,但仍想坚持使用令牌身份验证。
目前这是我生成和获取令牌的方式:
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);
为了验证我执行以下操作:
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
});
任何人都可以提出一个巧妙的方法来混合这两种策略?我应该使用express-jwt 吗? express-jwt 和 passport-jwt 有什么区别?
【问题讨论】:
标签: node.js passport.js mean-stack jwt passport-facebook