You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express+Mongoose项目用Passport认证后无法获取当前登录用户名如何解决

问题原因

你调用的User.username中的User是Mongoose导出的用户模型构造函数,仅用于操作用户集合,不会存储当前登录用户的信息,所以取到空值是正常的。

修复方案

Passport在用户登录验证通过后,会自动将当前登录用户的实例挂载到请求对象的req.user属性上,直接修改/userprofile路由的传参逻辑即可:

// app.js中修改对应路由代码
app.get("/userprofile",isLoggedIn ,(req,res) =>{
    res.render("userprofile", {name: req.user.username});
})

可选优化

如果你需要在多个页面都用到当前登录用户信息,可以添加全局中间件将用户信息挂载到模板全局变量,不需要每个路由单独传参:

// app.js 中该代码放在 passport.session() 中间件之后、所有路由之前
app.use((req, res, next) => {
  res.locals.currentUser = req.user;
  next();
});

配置后你可以在任意ejs模板中直接使用<%= currentUser.username %>读取用户名,不需要路由传name参数。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:09:00