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 无法读取 flash 消息