【发布时间】:2020-10-25 21:19:36
【问题描述】:
我是 node js 的初学者,我正在尝试检查用户在注册后是否经过身份验证。
我正在使用 passport、passport-local 和 passport-local-mongoose 将用户保存在 mongoDB 数据库中。
这就是用户注册的方式:
app.post("/register", function (req, res) {
const username = req.body.username;
const password = req.body.password;
User.register({username: username}, password, function (err, user) {
if (err) {
console.log(err);
res.redirect("/register");
} else {
passport.authenticate("local")(req, res, function () {
res.redirect("/drive");
});
}
});
});
这就是我试图检查用户是否通过身份验证的方式:
app.get("/drive", function (req, res) {
if (req.isAuthenticated()) {
res.render("drive");
} else {
res.redirect("/login");
}
});
如果我使用 isAuthenticated() 作为函数调用,则此逻辑将不起作用,如果我使用 isAuthenticated(不是函数调用),这个逻辑会起作用。
我不明白这两者之间有什么区别(在护照包裹的情况下)以及为什么一个有效而另一个无效。
【问题讨论】:
标签: node.js express passport.js passport-local