Express Passportjs在路由器回调中未进行身份验证

问题描述 投票:0回答:1

如果我将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
    });
})

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

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个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.