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

登录后无法隐藏Login/Register标签、显示Logout标签的问题

问题修复方案

核心问题

你在模板中使用的变量是currentUser,但Express中间件里将用户信息赋值给了req.user,变量名称不匹配导致模板无法正确判断用户登录状态。

具体修复步骤

  1. 修正模板中的变量名
    将模板里的currentUser替换为user(对应Express传递的req.user):
<div class="navbar-nav ms-auto">
  <% if (!user) { %>
    <a class="nav-link" href="/login">Login</a>
    <a class="nav-link" href="/register">Register</a>
  <% } else { %>
    <a class="nav-link" href="/logout">Logout</a>
  <% } %>
</div>
  1. 确保Express将用户变量传递给模板
    在渲染页面的路由中,把req.user作为模板变量传入:
// 示例路由(根据你的实际页面调整)
app.get('/', (req, res) => {
  res.render('your-page-template', { user: req.user });
});
  1. 验证中间件的正确性
    确认用户认证中间件在路由之前执行,且正确将用户信息赋值给req.user。示例中间件:
app.use((req, res, next) => {
  // 根据你的认证方式(session/JWT等)获取用户
  req.user = req.session.currentUser; // 或从JWT解析结果赋值
  next();
});

额外检查

  • 登录后确认会话(或认证令牌)已正确设置,保证req.user在登录状态下有值。
  • 确认模板引擎(如EJS)配置正常,能正确解析<% %>语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:17:08