最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

混合护照

IT培训 admin 6浏览 0评论

混合护照

我是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有什么区别?

回答如下:

你可以像使用passport-facebook一样使用passport-jwt和新策略,这样你就可以在你的数据库中保存Facebook用户令牌并返回你的令牌

混合护照

我是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有什么区别?

回答如下:

你可以像使用passport-facebook一样使用passport-jwt和新策略,这样你就可以在你的数据库中保存Facebook用户令牌并返回你的令牌

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论