【问题标题】:Express Passportjs Authenticate not being reached in router callback路由器回调中未达到 Express Passport Js 身份验证
【发布时间】:2018-09-21 16:25:10
【问题描述】:

如果我将passport.authenticate("local") 作为中间件传递到我的路由中,它就会执行。但是这样我就无法访问 res 所以我可以将消息发送回我的前端。但是,如果我尝试在路由回调函数中调用它,它不会触发。

router.post("/login", function(req, res, next) {
    passport.authenticate("local", function(err, user, info) {
        console.log("Unreached"); // This is not logging
    });
})

这是我在app.js里面的passport.use

passport.use(new LocalStrategy({
        usernameField: "portalId"
    }, function(portalId, enteredPassword, done) {
        var params = {
            TableName: "MyTableName",
            KeyConditionExpression : "PortalID = :portalID",
            ExpressionAttributeValues : {
                ":portalID" : Number(portalId)
            }
        }
        docClient.query(params, function(err, user) {
            if (err) throw err;
            let realPassword = user.Items[0].password;

            bcrypt.compare(enteredPassword, realPassword, function(err, res) {
                if (err) throw err;
                if (res) {
                    return done(null, user);
                }
                if (!res) {
                    return done(null, false, { message: "Invalid Credentials" });
                }
            })
        })
    }));

【问题讨论】:

    标签: express routing passport.js passport-local


    【解决方案1】:

    在其他一些帖子中看到了一段使用自定义回调的代码,他在passport.authenticate 函数之后有(req, res, next)。我添加了这个,我的代码现在被触发了。

    【讨论】:

      猜你喜欢
      • 2018-02-04
      • 2013-05-28
      • 1970-01-01
      • 2014-03-18
      • 2014-05-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      相关资源
      最近更新 更多