express 权限控制问题,求优雅解决方案,谢谢
发布于 9 年前 作者 JChehe 9916 次预览 最后一次回复是 7 年前 来自 问答
我是下面这样实现权限控制的,但我觉得有点问题,如:
①每个路由都要写 前缀 /system_admin/ 以适配控制权限的中间件,非常冗余;
②系统有多种角色,如果一些路由只有部分角色才有权限访问的话,该又如何写呢?
router.all("/system_admin/*", function(req, res, next) {
if (req.session.user.role == 0) {
return next();
} else {
return next(new Error("权限不足"))
}
})
router.get("/system_admin/system_user_list", system_admin.system_user_list)
router.get("/system_admin/doctor_list", system_admin.doctor_list)
router.get("/system_admin/patient_list", system_admin.patient_list)
router.post("/system_admin/add_system_user", system_admin.add_system_user)
router.post("/system_admin/edit_system_user", system_admin.edit_system_user)8 回复
把你的中间件改一改, 放到具体路由上, 像这样.
@winky 这种方式比较巧妙,有点绕
@magicdawn 嗯,这样路由就像继承。
@winky middleware()里面怎么实现分到具体路由的?
@imhered 我上面那样的写法就是只对该条路由起作用, 具体中间件怎么写,你可以参考 https://github.com/jackhutu/jackblog-api-express/blob/master/server/api/user/index.js 里面的写法.
@winky 好的,谢谢!
可以用这个Express-authz插件,Express专门的权限管理插件,支持RESTful:https://github.com/node-casbin/express-authz