如果当前用户的id与所述路由中的id匹配,如何只允许访问路由?的NodeJS

时间:2017-09-28 17:35:41

标签: javascript node.js express

我的路线类似于:

router.get("/users/:id/thing", middlewareObj.isLoggedIn, function(req, res){
    res.render("thing.ejs");
});

我希望只有当前用户的id与路由中的“:id”匹配时才能访问此路由。我该怎么做呢?非常感激。

1 个答案:

答案 0 :(得分:1)

您可以使用参数ID比较已记录的用户(我假设您在req.user [确实应该检查护照]中):

if(req.user.id != req.params.id) return res.status(400);

您可以从网址中删除ID,只需使用已记录的用户数据即可。因为如果url id与用户id匹配,那么你就会有多余的东西。所以,有了这个..

router.get("/users/thing", middlewareObj.isLoggedIn, function(req, res){
  let id = req.user.id;

  //do something with the ID which you assume you do, otherwise why you want the ID in the first place

  ...

  //return the view  
  res.render("thing.ejs");
});