node 菜单权限判断

文章讲述了在系统中,即使用户界面未显示某些菜单,后台也需要对相关路由进行权限检查。通过Middleware增加用户权限判断,防止用户直接通过地址栏访问如/userList等未授权的路径。如果用户无权访问,系统将返回错误信息提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于那些在界面上没显示的菜单在后台路由中也是要检查下权限的,要不然像用户管理/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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值