如果我将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
。我添加了这个,我的代码现在被解雇了。