路由"/>
如何在 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 中保护路由
发布评论