首页 > 解决方案 > 用户连接 Passport 节点时在导航栏中显示选项

问题描述

如果有人连接,我希望我的导航栏显示“个人资料:{USER}”,否则显示一组 Sing up/Login 选项卡。

要点是:我正在使用 EJS,在 /views 文件夹中的 /partial 文件夹中具有单独的“head.ejs”和“header.ejs”esctions。

在 index.ejs 上,我可以显示我早期通过的内容:

res.render('index.ejs', {username: req.user.username})

但是我还没有成功地将这个“用户名从我的 index.ejs 传递给我的 header.ejs,我的导航栏在哪里。

我的另一个问题是导航栏上的日志记录(我使用 isLoggedin),我有一个:未定义函数 isLoggedin。

非常欢迎任何帮助或提示!:)

编辑:到目前为止,我得到了 header.ejs:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <ul class="navbar-nav mr-auto">
    <li class="nav-item">
      <a class="nav-link" href="/">Home</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="/stock">Stock</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="/login">Login</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="/registerUser">Add User ADMIN ONLY</a>
    </li>
    <li class="nav-item">
      <span class="nav-link"> Profile of :  <%=username %> </span>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="/logout">Logout</a>
    </li>
  </ul>
</nav>

这是我的 index.ejs(部分/头部是纯 HTML)

<!DOCTYPE html>
<html lang="en">
  <head>
    <%- include('./partial/head'); %>

  </head>

  <body>
    <head>
      <%- include('./partial/header',{username: username}); %>
    </head>

然后这是我的代码的获取索引部分:

    app.get('/', isLoggedIn, (req, res) => {
  db.collection('installations').find().toArray()
    .then(results => {
      res.render('index.ejs', {installation: results,username: 
req.user.username})
    })
    .catch(error => console.error(error))
})

标签: javascriptnode.jspassport.jsejsnavbar

解决方案


尝试放入:

"Profile of : {{username}}"


推荐阅读