使用req.user
重定向后,我的undefined
对象变为passport.authenticate
。它具有重定向前的值。如何防止req.user
成为undefined
?
我的服务器处理文件是:
app.use(require("express-session")({
secret: "Hack hai ye hack",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use('mentor', new LocalStrategy(Mentor.authenticate()));
passport.serializeUser(Mentor.serializeUser());
passport.deserializeUser(Mentor.deserializeUser());
passport.use('team', new LocalStrategy(Team.authenticate()));
passport.serializeUser(Team.serializeUser());
passport.deserializeUser(Team.deserializeUser());
passport.use('admin', new LocalStrategy(Admin.authenticate()));
passport.serializeUser(Admin.serializeUser());
passport.deserializeUser(Admin.deserializeUser());
app.use(function (req, res, next) {
console.log("print"+req.user);
res.locals.mentor = req.user;
res.locals.team = req.user;
res.locals.admin = req.user;
next();
});
app.listen(process.env.PORT || 3000, process.env.IP, () => {
console.log("Port up and running");
});
我的路线文件是:
router.get("/login", function(req, res){
res.render("teamLogin");
});
router.post("/login", passport.authenticate("team",
{
// successRedirect: "/team/teamDashboard",
failureRedirect: "/team/login",
}),function(req, res) {
console.log("Display"+req.user);
res.redirect("/team/teamDashboard")
});
router.get("/teamDashboard", function(req, res){
res.render("teamDashboard");
});
function isTeamLoggedIn(req, res, next){
if(req.isAuthenticated()){
console.log("Yes")
return next();
}
console.log("No")
req.flash("error", "You need to be logged in to do that");
res.redirect("/team/login");
}
module.exports = router;
类似于console.log("Display"+req.user);
中的/login
会给出正确的值,但是在res.redirect("/team/teamDashboard")
之后,req.user
会变成undefined
。
所有导入均已完成,但为了确保代码干净而未提及。出于相同原因未提及某些路线。