【问题标题】:When to use passport.js?什么时候使用passport.js?
【发布时间】:2017-10-11 04:31:25
【问题描述】:

过去几个月我一直在使用 node 开发以尝试理解框架,现在我实际上要尝试为多种设备制作应用程序。

我想使用一个节点项目作为 api,它将处理所有的 post 和 get 请求。

在另一个节点项目中,我将使用 ajax 和 socket.io 与节点 api 通信的反应 Web 界面。

在移动 android/ios 或 cordova 中,我会像上面那样使用移动接口进行通信。

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

现在我有一个使用 bcrypt 加密注册和登录密码的节点项目。我还使用护照来建立会话和发送消息。

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;

            bcrypt.compare(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])
    })
});

我在这里读到http://passportjs.org/docs/overview,如果我要将我的节点项目用作 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 注册并检查密码匹配。如果我删除它,这是否意味着来自网络浏览器或移动设备的每个请求也必须传输用户和散列密码?

【问题讨论】:

    标签: node.js passport.js


    【解决方案1】:

    passport 是一个 authentication 库,会话是 authorization 的一部分——该过程中的不同步骤。您可以使用passport 发出一个令牌,例如jsonwebtoken,而不是使用具有不同库的会话来验证这些令牌,例如ejwt,或者创建一个中间件函数来验证需要身份验证的路由上的这些令牌

    passport 也可以通过已经开发的许多插件进行扩展,以允许多种形式的身份验证来发布您的授权方法。

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

    【讨论】:

    • 感谢您明确说明。我阅读了有关 jwt 的内容,现在我对这个主题有了更好的理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多