如何在 nodejs 中保护路由

编程入门 行业动态 更新时间:2024-10-09 17:21:38

如何在 nodejs 中保护<a href=https://www.elefans.com/category/jswz/34/1771390.html style=路由"/>

如何在 nodejs 中保护路由

请问我怎样才能让管理员访问特定的路线

这是我的 mongodb 数据库

{
  "_id": {
    "$oid": "640e16b3186c0b1910c1dedf"
  },
  "isAdmin": true,
  "name": "sample name",
  "email": "[email protected]",
  "password": "$2a$10$tbi9fblLS9NXai3Osb7H7OdLVqq34I0OTKgvB5BmVBEASabvX/ybu",
  "__v": 0
}

isAdmin 设置为 true 我希望管理员是唯一访问此路由的人

router.post(`/categories`, async (req, res) => {
  if(req.body.isAdmin){
try {
    let category = new Category();
    category.type = req.body.type;
    category.description = req.body.description;

    await category.save();
    res.json({
      status: true,
      message: "save succes"
    });
  } catch (error) {
    res.status(500).json({ success: false, message: error.message });
  }}
  else{
    console.log("auth")
  }
});

每次我尝试上面的代码时,它都会跳过 if 语句并转到 else

回答如下:

如果您正在访问

req.body.isAdmin
这意味着您发布请求正文 json 必须包含属性
isAdmin
并设置为
true
:

例如

const postRequestBody = {
   isAdmin: true
}

这不安全,因为客户端可以控制是否显示管理员访问权限。

在您的实施之后,您应该在 else 子句中返回 HTTP 401 Unauthorized。

router.post(`/categories`, async (req, res) => {
  if(req.body.isAdmin){
    try {
      let category = new Category();
      category.type = req.body.type;
      category.description = req.body.description;

      await category.save();
      res.json({
        status: true,
        message: "save succes"
      });
    } catch (error) {
      res.status(500).json({ success: false, message: error.message });
    }
  } else {
    res.status(401).json({ success: false, message: "Sorry, you need admin access for this route" }
    console.log("auth")
  }
});

更多推荐

如何在 nodejs 中保护路由

本文发布于:2024-05-13 14:13:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759652.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:路由   如何在   nodejs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!