javascript - 如果当前用户的 ID 与所述路由中的 ID 匹配,如何只允许访问该路由? Node JS

标签 javascript node.js express

我有一条类似这样的路线:

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

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

最佳答案

您可以将登录的用户(我假设您在 req.user 中有它[实际上您应该检查护照])与参数 ID 进行比较:

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

您可以从 URL 中删除 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");
});

关于javascript - 如果当前用户的 ID 与所述路由中的 ID 匹配,如何只允许访问该路由? Node JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475215/

相关文章:

javascript - 如何将每个快速 js 请求包装在域或 trycatch 中

node.js - ExpressJS 后端将请求放入队列

javascript - 错误 :Invalid login 535 5. 0.0 身份验证失败

javascript - 在页面的其余部分完成加载后延迟加载 html5 视频

javascript - 如何将带有双引号反斜杠的 JSON 字符串转换为 Javascript 对象

javascript - 将 javascript 数组插入到另一个数组中

node.js - 如何使用 node.js 连接到 ElastiCache 集群

node.js - NodeJS 读取电子邮件 pop3

node.js - 如何实现对数据库的异步调用

javascript - sfWidgetFormDoctrineJQueryAutocompleter - 事件不起作用