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

Express-EJS集成JWT认证:删除Cookie触发user未定义错误

解决EJS中user is not defined的问题

问题根源是后端在无Cookie时未传递user变量,导致EJS模板中直接判断!user时变量未定义,触发引用错误。以下是修复步骤:

1. 后端统一传递user变量

无论请求是否携带有效Cookie,都要给模板传递user变量,无有效用户时设为null或undefined。示例代码:

// Express路由示例
app.get('/', (req, res) => {
  let user = null;
  // 检查Cookie中的JWT
  if (req.cookies.jwt) {
    try {
      // 解码JWT获取用户信息
      user = jwt.verify(req.cookies.jwt, '你的密钥');
    } catch (err) {
      // 处理无效/过期的JWT,清除Cookie
      res.clearCookie('jwt');
    }
  }
  // 统一传递user变量到模板
  res.render('你的模板名', { user });
});

2. 修正EJS中的条件判断

现在user变量始终存在,可安全进行条件渲染:

<% if (user) { %>
  <!-- 渲染用户信息 -->
  <div>当前用户:<%= user.name %></div>
<% } else { %>
  <!-- 处理离线/未登录场景 -->
  <div>请登录后访问</div>
<% } %>

额外提示

  • 解码JWT时务必捕获异常,避免因无效token导致服务器报错
  • 清除无效Cookie后,用户后续请求不会再携带无效token,减少不必要的解码操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:17:07