Мой 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);
in /login
дает правильное значение, но после res.redirect("/team/teamDashboard")
значение req.user
становится undefined
.
Весь импортбыли сделаны, но не упомянуты в вопросе, чтобы сохранить код в чистоте.Некоторые маршруты не были упомянуты по той же причине.