express 权限控制问题,求优雅解决方案,谢谢
我是下面这样实现权限控制的,但我觉得有点问题,如:
①每个路由都要写 前缀 /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)
7 回复
const adminRouter = require('express').Router();
router.use('/system_admin', adminRouter);
adminRouter.get("/system_user_list", system_admin.system_user_list);
...
@imhered 我上面那样的写法就是只对该条路由起作用, 具体中间件怎么写,你可以参考 https://github.com/jackhutu/jackblog-api-express/blob/master/server/api/user/index.js 里面的写法.