测试账号单独屏蔽菜单权限需禁用其超级管理员身份,并为其直接分配“隐藏菜单”权限,通过匹配路由路径实现精准隐藏,不影响角色配置与其他用户。

测试账号单独屏蔽菜单权限,关键在于不改动角色和全局权限配置,而是通过用户级权限控制实现“精准隐藏”。Laravel-admin 默认支持用户直连权限,配合菜单过滤逻辑,就能让特定测试账号看不到某些菜单项,同时不影响其他用户。
确认测试账号已启用独立权限
Laravel-admin 允许直接为用户分配权限(不经过角色),这比改角色更灵活。需确保该测试账号在数据库 admin_users 表中未被设为超级管理员(is_super = 0),否则会跳过所有权限检查。
- 登录后台 → 进入「用户管理」→ 找到测试账号 → 编辑 → 取消勾选「超级管理员」
- 保存后,该用户将严格遵循“自身权限 + 所属角色权限”的合并规则(见
allPermissions()方法)
为测试账号禁用指定菜单项
菜单是否显示由 Encore\Admin\Menu::make() 的过滤逻辑决定,默认读取用户可访问的路由权限。要屏蔽菜单,本质是让系统认为该用户“无权访问对应路由”。
- 进入「权限管理」→ 点击「创建权限」
- 填写:
权限标识(slug):例如
hide-menu-users(命名建议带hide-前缀便于识别) 权限名称:如 “隐藏用户管理菜单” HTTP 方法:留空或选GETHTTP 路径:填对应菜单的路由路径,例如/admin/users或通配符/admin/users* - 保存后,进入「用户管理」→ 编辑该测试账号 → 在「权限」标签页中,勾选刚创建的
hide-menu-users
验证与补充说明
菜单是否隐藏,取决于 Laravel-admin 是否能在当前用户权限中匹配到对应路由的访问许可。只要该用户没有任一权限的 slug 对应其菜单所绑定的路径,该菜单就不会显示。
- 刷新测试账号后台页面,确认目标菜单(如「用户管理」)已消失
- 若菜单仍显示,检查:
– 是否误设了超级管理员;
– 权限路径是否与菜单实际路由完全匹配(可用php artisan route:list查看);
– 浏览器缓存或菜单缓存(可临时清空storage/framework/cache) - 注意:此方式只隐藏菜单,不阻止直接访问 URL;如需彻底禁止访问,需额外配置路由中间件或控制器内
Permission::check()
这种方式轻量、可逆、不影响其他账号,适合灰度测试、客户演示或临时隔离场景。











