Express 如何检查特定用户是否使用Passport登录

Express 如何检查特定用户是否使用Passport登录,express,passport.js,Express,Passport.js,我想确保一个特定的链接(“新博客”)只对我自己可用(username=“admin”),而不是对公众可用。我编写了以下if语句,但它抛出了一个错误: <% if(currentUser.username = "admin") { %> <ul class="nav navbar-nav"> <li class="active"><a href="/new"><i class="fa fa-plus" aria-hidd

我想确保一个特定的链接(“新博客”)只对我自己可用(username=“admin”),而不是对公众可用。我编写了以下if语句,但它抛出了一个错误:

      <% if(currentUser.username = "admin") { %>
  <ul class="nav navbar-nav">
    <li class="active"><a href="/new"><i class="fa fa-plus" aria-hidden="true"></i>   New Blog <span class="sr-only">(current)</span></a></li>
  </ul>
  <% } %>

当身份验证成功时,Passport将用户对象附加到express路由器的请求对象(req.user)。这是通过本地身份验证策略中的done(null,user)实现的。您可以使user对象检查相应的用户是否确实是管理员

router.post("/blogs", function(req, res){
    req.body.blog.body = req.sanitize(req.body.blog.body);
    Blog.create(req.body.blog, function(err, newBlog){
    if(err) {
        res.render("new", {
            // Ternary operator which checks if the user object is empty or not
            currentUser: req.user ? req.user.currentUser: '',
            // I hope currentUser is present in your Schema object
        });
    } else {
        res.redirect("/blogs");
    }
});
然后,您可以在视图中检查它是否是正确的用户:

<% if(currentUser === "admin") { %>
    <ul class="nav navbar-nav">
        <li class="active"><a href="/new"><i class="fa fa-plus" aria-hidden="true"></i>   New Blog <span class="sr-only">(current)</span></a> </li> 
    </ul>
<% } %>


可以显示更多的代码,特别是路由器中的控制器回调(app.get(),app.put())?是的,当然,刚刚上传了上面的所有路由,这样做了吗?嗯,遗憾的是没有。但我确信这是因为我没有正确地实现它。到底@DaveB1在哪里?如果这是一个很长的项目,你可以把它放在github上,我们将继续从那里工作。嗨,昨晚午夜左右,我们终于找到了答案!!我同意:这个很好用。谢谢
<% if(currentUser === "admin") { %>
    <ul class="nav navbar-nav">
        <li class="active"><a href="/new"><i class="fa fa-plus" aria-hidden="true"></i>   New Blog <span class="sr-only">(current)</span></a> </li> 
    </ul>
<% } %>