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

使用Passport.js时如何在Handlebars布局模板中显示当前登录管理员

如何在Handlebars布局模板中显示当前登录管理员信息?

要在全局布局模板admin.handlebars里显示当前登录的管理员信息,你不用在每个路由里手动重复传递用户数据——用Express的res.locals就能轻松搞定,它的变量会自动在所有模板(包括布局)中生效。具体步骤如下:

  • 第一步:添加全局中间件,挂载用户数据到res.locals
    在你的Express应用中,注册一个全局中间件(注意要放在Passport初始化中间件之后、所有路由之前),这样每次请求都会自动检查登录状态,并把管理员信息存入全局模板变量:

    app.use((req, res, next) => {
      // 仅当用户已登录时,把管理员名称存入locals
      if (req.user) {
        res.locals.currentAdmin = req.user.adminname;
      }
      next();
    });
    
  • 第二步:修改布局模板,直接调用变量
    现在你可以在admin.handlebars里直接使用currentAdmin变量了,不用再单独给每个视图传值:

    <div class="admin-detail"> 
      <p class="admin-name">{{ currentAdmin }}</p> 
      <i class="admin-icon fas fa-chevron-down"></i> 
      <div class="admin-actions"> 
        <div class="admin-logout">Đăng xuất</div> 
      </div> 
    </div>
    

额外小提示:如果担心未登录时变量为空导致模板显示异常,可以加个Handlebars条件判断做兼容:

<p class="admin-name">{{#if currentAdmin}}{{ currentAdmin }}{{else}}未登录{{/if}}</p>

这样不管哪个路由使用这个布局模板,只要用户已登录,管理员名称都会自动显示出来,不用再在每个路由的render方法里重复传递CurentAdmin参数啦。

内容的提问来源于stack exchange,提问作者Thi Đình

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:07:29