Javascript 如何在所有视图中保持req.user恒定?

Javascript 如何在所有视图中保持req.user恒定?,javascript,express,passport.js,Javascript,Express,Passport.js,我正在使用PassportJS和Express: app.use(passport.initialize()); app.use(passport.session()); passport.use(new LocalStrategy(User.authenticate())); passport.serializeUser(User.serializeUser()); passport.deserializeUser(User.deserializeUser()); app.use(functi

我正在使用PassportJS和Express:

app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(function(req, res, next){
  res.locals.CurrentUser = req.user;
    next();
});

app.get('/pics/:id', middleware.isLoggedIn, function(req, res) {
    User.find({"_id": req.params.id}, function(err, userProfile) { 
        if(err) {
            console.log("error on profile page: " + err)
        } else {
            res.render("user-profile", {userProfile: userProfile});
        }
    })
})
这是我缩短的服务器代码。现在在客户端,我尝试使用res.locals代码,我发现username属性保持不变,但ID不变

<%=CurrentUser.username%>
<%=CurrentUser._id%>

上述代码生成: 肖恩5AEA9A9D66C1A87594F1 当我询问

它产生: 肖恩5aeaafe552984a856080644b 当我询问


如何保持CurrentUser的.u id属性像name一样保持不变?

当您对passport使用本地策略时,当您在数据库中找到您的用户时,需要使用函数
req.logIn
。之后,它将在
req.user
中持久化,我也在使用passport.authenticate。根据文档:“注意:passport.authenticate()中间件自动调用req.login()。此功能主要用于用户注册时,在此期间可以调用req.login()自动登录新注册的用户。”[这是我的登录路径]app.post(“/login”),passport.authenticate(“本地”,{successRedirect:“/home”,failureRedirect:“/login”}),function(req,res){})我在stackoverflow的帖子上看到,如果您使用本地策略,调用req.login就成了您的责任。我和您有同样的问题。尝试
req.login(userProfile,function(err))
紧跟在
find
方法之后