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

在Node-Express应用中用户认证后如何显示/隐藏登录、登出相关链接

问题根源

你在全局中间件中已经固定给res.locals.user赋值为req.user或者null,所以EJS模板渲染时,user变量永远是已定义状态,typeof user !== 'undefined'这个判断永远为真,根本走不到else分支。同时你原来的判断逻辑完全写反了:现有逻辑是user存在时显示注册、登录链接,和你要实现的需求完全相反。

修复方案

不需要修改中间件代码,直接调整EJS模板的判断逻辑即可:

<% if (!user) { %>
<!-- 未登录状态展示注册、登录 -->
<li class="nav-item">
  <a class="nav-link active" href="/user/register">Sign Up</a>
</li>
<li class="nav-item">
  <a class="nav-link active" href="/user/login">Sign in</a>
</li>
<% } else { %>
<!-- 已登录状态展示登出 -->
<li class="nav-item">
  <a class="nav-link active" href="/logout">Sign Out</a>
</li>
<% } %>

逻辑说明

未登录场景下user值为null,!user判断结果为真,展示注册、登录链接;登录后user为有效值,!user判断结果为假,展示登出链接,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 15:24:02