Passport.js req.user对象在重定向之前保持正确的值,但是在重定向之后变得未定义?

时间:2019-01-29 21:46:09

标签: javascript node.js express passport.js passport-local

使用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

所有导入均已完成,但为了确保代码干净而未提及。出于相同原因未提及某些路线。

0 个答案:

没有答案