对于那些在界面上没显示的菜单在后台路由中也是要检查下权限的,要不然像用户管理/userList这条路由虽然没有配给某个测试账号,但他可以直接在地址栏输入/userList进行访问。所以在Middleware中需要增加判断用户是否有此page_url的访问权限。
/** 需要用户菜单权限*/
async userPermission(req, res, next) {
//先判断用户session
if (!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);
文章讲述了在系统中,即使用户界面未显示某些菜单,后台也需要对相关路由进行权限检查。通过Middleware增加用户权限判断,防止用户直接通过地址栏访问如/userList等未授权的路径。如果用户无权访问,系统将返回错误信息提示。
2266

被折叠的 条评论
为什么被折叠?



