以下是我的本地策略,现在对我来说运行良好。
passport.use(new LocalStrategy(
function(username, password, done) {
User.getUserByUsername(username, function(err, user){
if(err) console.log(err);
if(!user){
console.log("No user");
done(null, false, {message: 'Unknown User'});}
console.log("success");
done(null, true, username);
User.comparePassword(password, user.password, function(err, isMatch){
if(err) console.log(err);
if(isMatch){
console.log("There is a match");
done(null, true, user);
} else {
console.log("Invalid password");
done(null, false, {message: 'Invalid password'});
}});
});
}));
但是,在数据库中找到用户名和相应的密码后,我想重定向到另一个页面。我在发布路由中设置了passport.authenticate()方法但是在数据库中找到用户名和密码之后,页面重新加载几分钟,直到它返回找不到网页错误,failRedirect或successRedirect路由都不起作用
router.post("/users/login",
passport.authenticate("local", {
successRedirect:"/",
failureRedirect:"/login",
failureFlash:true}, function(err, user, info){
if(err){console.log(err);}
console.log(user)
console.log(info)
}),
function(req, res){
res.redirect("/");
});