对于那些在界面上没显示的菜单在后台路由中也是要检查下权限的,要不然像用户管理/userList这条路由虽然没有配给某个测试账号,但他可以直接在地址栏输入/userList进行访问。所以在Middleware中需要增加判断用户是否有此page_url的访问权限。
/** 需要用户菜单权限*/async userPermission(req, res, next) {//先判断用户sessionif (!req.session || !req.session.user || !req.session.user.id) {return res.redirect('/login');}let hasPower = false;//userMenu指当前用户拥有的菜单集合,请自行db查询userMenu.forEach(el => {if (el.page_url == req.route.path) {hasPower = true;}});if (!hasPower) {if (req.xhr) {return res.json({state: false,msg: "抱歉,您无此权限!请联系管理员"});}return res.send('抱歉,您无此权限!请联系管理员');}next();}
路由中增加中间件的执行
router.get('/userList', auth.userPermission, main.showUser);