【发布时间】:2021-01-05 23:23:28
【问题描述】:
我从 odin 项目中学习了一个关于护照的教程,它很有效,所以我决定实施我在自己的项目中学到的东西,他们和我的不同之处在于我遵循了一种设计模式,而他们没有,而我似乎无法找到它为什么没有响应的问题。 在我的登录页面中,我使用了电子邮件和密码,并且我尝试多次更改以下代码。
这是controller.js
//passport functions
passport.use(
new LocalStrategy((username, password, done) => {
User.findOne({ username: username }, (err, user) => {
console.log(user)
if (err) {
return done(err);
};
if (!user) {
return done(null, false, { msg: "Incorrect username" });
}
if (user.password !== password) {
return done(null, false, { msg: "Incorrect password" });
}
return done(null, user);
});
})
);
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
//end ofpassport functions
app.use(session({ secret: "cats",
resave: false, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.urlencoded({ extended: false }));
app.use(function(req, res, next) {
res.locals.currentUser = req.user;
next();
});
然后我从 routes.js 调用控制器来验证用户身份,但它一直失败并默认失败重定向
app.post('/signin', passport.authenticate("local",{
successRedirect:"/",
failureRedirect:'/signup'}))
【问题讨论】:
标签: javascript node.js express passport.js passport-local