簡體   English   中英

導航欄中的動態登錄/注銷

[英]Dynamic login/logout in Navbar

我試圖根據用戶狀態在導航欄中顯示 LOGIN 或 LOGOUT 的文本,我嘗試使用 ejs 引擎,但它沒有用。

它顯示未定義登錄。

在我的 app.js 中:

    app.get("/logout", function (req, res) {
  req.logout();
  res.redirect("/");
});

app.post("/register", function (req, res) {

  User.register({ username: req.body.username }, req.body.password, function (err, user) {
    if (err) {
      console.log(err);
      res.redirect("/register");
    } else {
      passport.authenticate("local")(req, res, function () {
        res.redirect("/secrets");
      });
    }
  });

});

app.post("/login", function (req, res) {

  const user = new User({
    username: req.body.username,
    password: req.body.password
  });

  req.login(user, function (err) {
    if (err) {
      console.log(err);
    } else {
      passport.authenticate("local")(req, res, function () {
        res.redirect("/secrets");
      });
    }
  });

});

我的 header.ejs:

<ul class="nav navbar-nav navbar-right">
        <li id="home"><a href="/">HOME</a></li>
        <li id="register"><a href="/register">REGISTER</a></li>
          <% if (login) { %>
        <li> <a href="/logout">Logout</a></li>
          <% } else { %>
        <li><a href="/login">Login</a></li>
          % }%>
</ul>

錯誤:未定義登錄

似乎您還沒有將變量傳遞給 ejs 模板。 要訪問 ejs 中的變量,您需要在渲染 ejs 模板時從服務器傳遞它。

這看起來像這樣

app.get("/", function(req, res){
    res.render("header", {login: 'SOME VALUE' })
});

您可能想查看以下文章以查看一個工作示例。 https://dzone.com/articles/nodejs-tutorial-for-beginners-part-3-transferring

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM