繁体   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