Node.js:取决于用户身份验证的条件内容

时间:2017-07-12 11:24:16

标签: javascript node.js authentication pug passport.js

我在我的控制器中有这个方法来检查用户是否已登录。它使用passport.js并且工作正常。

exports.isLoggedIn = (req, res, next) => {
  if (req.isAuthenticated()) {
    next();
    return;
  }

在我的一个视图中,我希望仅在用户登录时向用户显示某些内容。该视图是页面标题的一部分。如果用户退出,则会向他显示两个按钮"注册"和"登录"。 如果他已登录,则应向他显示" account" (管理他的帐户)和"退出"。

我使用哈巴狗并尝试以下方法。由于函数没有在pug文件中定义,所以它显然不起作用。此外,我不确定这是否是正确的做法。

if !isAuthenticated()
  a(href="/register") Register
  a(href="/login") Log in
if isAuthenticated()
  a(href="/account") Account
  a(href="/logout") Log out

1 个答案:

答案 0 :(得分:1)

您似乎希望将isAuthenticated的值传递给您的视图。

我自己通常不会使用哈巴狗,但看起来您需要执行以下操作来传递变量:

var isAuthenticated = req.isAuthenticated();
pug.renderFile('template.pug', {
  authenticated: isAuthenticated
})

然后在你的pug文件中使用authenticated。