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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Express Passportjs在路由器回调中未进行身份验证相关的知识,希望对你有一定的参考价值。

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

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

以上是关于Express Passportjs在路由器回调中未进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Express & Passportjs 检查 MongoDB 文档中的特定字段

Express 会话和 PassportJS 之间的区别

Express + PassportJS 无法读取 flash 消息

Express 会话与 PassportJS 会话

在 React/Express 中使用 PassportJS 进行 Google OAuth 时出现 CORS 错误

PassportJS - 自定义回调并将 Session 设置为 false