限制用户访问 Node.js

Limit acces to users Node.js

我想将对 /secrets 路由的访问限制为仅用户

app.get("/secrets", function(req, res){

  Post.find({}, function(err, posts){
    res.render("secrets", {
         posts: posts
      });
  });
});

我知道应该是这样的:

app.get("/secrets", function(req, res){
  if (req.isAuthenticated()){
    res.render("secrets");
  } else {
    res.redirect("/login");
  }
});

但我不知道如何进行,因为我已经有一个回调函数。

app.get('/secrets', checkAuthentication, function (req, res) {
  Post.find({}, function (err, posts) {
    res.render("secrets", {
      
      posts: posts
    });
  });
});
function checkAuthentication(req, res, next) {
  if (req.isAuthenticated()) {
    

    next();
  } else {
    res.redirect("/login");
  }
}

你可以使用像这样的中间件。

app.get("/secrets", secretsPermissionCheck, function(req, res){
  // do your request processing
  }
});

您可以在您的中间件文件夹中编写以下代码。

module.exports = function secretsPermissionCheck(req, res, next){
        if(!isAuthenticated()) {
            res.redirect("/login")
    }else {
        next();
    }

} 

您提供的第二个代码是包装器,因为您首先要检查用户是否经过身份验证。如果是,那么你正常操作,发送POST请求寻找posts,如果不是,那么你redirect登录。

app.get("/secrets", function(req, res){
  if (req.isAuthenticated()){
  //start
      Post.find({}, function(err, posts){
          res.render("secrets", {
              posts: posts
          });
      });
  //end
  } else {
    res.redirect("/login");
  }
});