【发布时间】:2019-07-26 04:18:08
【问题描述】:
我正在使用 Passport.js 和 Express
这是策略:
passport.use(
new Strategy(async function(username, password, done) {
try {
var user = await db.findOne("users", { username: username });
if (!user) {
console.log(`Incorrect username`.red);
return done(null, false, { message: "Incorrect username" });
}
} catch (error) {
return done(error);
}
if (username !== user.username) {
return done(null, false, { message: "Icorrect user!" });
}
if (password !== user.password) {
// console.log("Incorrect Password");
return done(null, false, { message: "Icorrect password!" });
}
return done(null, user, { message: "user lorem ipsum" });
})
);
在执行登录后请求身份验证时:
app.post(
"/Login",
// checkCred,
passport.authenticate("local", {
failureFlash: true,
successFlash: true
}),
// The following function is only invoked if authentication succeeded
(req, res) => {
console.log(`Called`.red);
console.log(`CAAALEEEEE`.green);
res.send(
JSON.stringify({
status: "ok",
message: "OK",
redirect: "/User",
user: req.user ? req.user : "user not found in request"
})
);
// res.redirect("/User");
}
);
如果身份验证未通过,则永远不会调用第二个 (req, res) => { 函数。
如何使护照调用 next() 函数以便我可以向用户返回响应?
【问题讨论】:
标签: node.js passport.js