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

当使用passport.js?

IT培训 admin 6浏览 0评论

当使用passport.js?

我在过去几个月,试图了解框架节点不断发展,现在我究竟要尽量使一个应用程序的多个设备。

我想用一个节点项目作为API,它会处理所有发布和GET请求。

在另一个节点项目,我将有一个反应的网络接口与Ajax和socket.io节点API通信。

在移动机器人/ IOS或科尔多瓦我将不得不移动接口如上通信。

现在,我已经解释了我的问题的背景,我将介绍我的问题。

现在我有一个使用bcrypt加密的注册和登录密码节点项目。我也用护照建立会话,并且flash消息。

router.post('/login',
    passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
    function(req, res) {
        res.redirect('/');
    });

passport.use(new LocalStrategy(
    function(username, password, done) {
        db_functions.getUserByEmail(username,function(error, results)  {
            if (error) throw error;

            bcryptpare(password, results[0].password, function(err, res) {
                if(res === true){
                    return done(null,results[0])
                } else {
                    return done(null, false, {message: 'Invalid password'})
                }
            });
        })
    }));

passport.serializeUser(function(user, done) {
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    console.log(id)
    db_functions.getUserById(id,function(error, results)  {
        if (error) throw error;
        done(error,results[0])
    })
});

我读到这里,如果我将用我的节点项目作为一个API,我应该禁用会话,因此我将使用:

app.get('/api/users/me',
  passport.authenticate('basic', { session: false }),
  function(req, res) {
    res.json({ id: req.user.id, username: req.user.username });
  });

现在,我已禁用会话,正是我为什么要继续使用的护照吗?我用bcrypt登记和检查密码匹配当用户登录,如果我不将其删除,这是否意味着每个来自Web浏览器或移动设备的要求也将必须发送用户和散列密码?

回答如下:

passport是认证库和会话授权的一部分 - 在这个过程中的不同步骤。你可以使用passport发出令牌,如jsonwebtoken,而不是使用会话与一个不同的库来验证那些,如ejwt,或创建一个中间件功能来验证航线上这些令牌需要身份验证

passport也扩展了很多已经发展到允许许多形式的认证颁发的授权方法插件。

你不必使用它,它只是使得它更容易一些。 bcrypt,在另一方面,你可能要使用。

当使用passport.js?

我在过去几个月,试图了解框架节点不断发展,现在我究竟要尽量使一个应用程序的多个设备。

我想用一个节点项目作为API,它会处理所有发布和GET请求。

在另一个节点项目,我将有一个反应的网络接口与Ajax和socket.io节点API通信。

在移动机器人/ IOS或科尔多瓦我将不得不移动接口如上通信。

现在,我已经解释了我的问题的背景,我将介绍我的问题。

现在我有一个使用bcrypt加密的注册和登录密码节点项目。我也用护照建立会话,并且flash消息。

router.post('/login',
    passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
    function(req, res) {
        res.redirect('/');
    });

passport.use(new LocalStrategy(
    function(username, password, done) {
        db_functions.getUserByEmail(username,function(error, results)  {
            if (error) throw error;

            bcryptpare(password, results[0].password, function(err, res) {
                if(res === true){
                    return done(null,results[0])
                } else {
                    return done(null, false, {message: 'Invalid password'})
                }
            });
        })
    }));

passport.serializeUser(function(user, done) {
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    console.log(id)
    db_functions.getUserById(id,function(error, results)  {
        if (error) throw error;
        done(error,results[0])
    })
});

我读到这里,如果我将用我的节点项目作为一个API,我应该禁用会话,因此我将使用:

app.get('/api/users/me',
  passport.authenticate('basic', { session: false }),
  function(req, res) {
    res.json({ id: req.user.id, username: req.user.username });
  });

现在,我已禁用会话,正是我为什么要继续使用的护照吗?我用bcrypt登记和检查密码匹配当用户登录,如果我不将其删除,这是否意味着每个来自Web浏览器或移动设备的要求也将必须发送用户和散列密码?

回答如下:

passport是认证库和会话授权的一部分 - 在这个过程中的不同步骤。你可以使用passport发出令牌,如jsonwebtoken,而不是使用会话与一个不同的库来验证那些,如ejwt,或创建一个中间件功能来验证航线上这些令牌需要身份验证

passport也扩展了很多已经发展到允许许多形式的认证颁发的授权方法插件。

你不必使用它,它只是使得它更容易一些。 bcrypt,在另一方面,你可能要使用。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论