Skip to content

菜单与权限控制

在 Nodesify Admin 中,菜单的可见性与基于角色的访问控制 (RBAC) 系统紧密集成。这确保了用户只能看到与其角色和权限相关的导航项。

工作原理

  1. 菜单定义:菜单在数据库中定义(通过“系统管理 > 菜单管理”进行管理)。每个菜单项都可以选择性地链接到一个特定的权限代码 (authCode)。
  2. 角色分配:菜单被显式分配给角色。
  3. 动态渲染:当用户登录时,后端 (/menus) 仅返回分配给其角色的菜单树。前端根据该树动态渲染导航栏。

默认菜单结构与权限

下表列出了系统中预置的默认菜单项及其关联的权限代码(如适用)。

菜单名称路径关联权限代码描述
仪表盘/dashboard-仪表盘项目的根目录。
└ 分析页/dashboard/analyticsDashboard:Analytics分析和统计视图。
└ 工作台/dashboard/workspaceDashboard:Workspace个人工作台视图。
业务模块/business-业务模块的根目录。
└ 财务管理/business/financeBusiness:Finance财务管理模块。
库存管理/inventory-库存模块的根目录。
└ 库存概览/inventory/overviewInventory:Overview库存状态概览。
系统管理/system-系统管理的根目录。
IAM/system/iam-身份与访问管理组。
   └ 用户管理/system/userSystem:User:List管理系统用户。
   └ 部门管理/system/deptSystem:Dept:List管理组织部门。
   └ 角色管理/system/roleSystem:Role:List管理角色与权限。
资源配置/system/resources-系统资源管理组。
   └ 菜单管理/system/menuSystem:Menu:List关键: 配置这些菜单项。
   └ 字典管理/system/dictSystem:Dict:List管理数据字典。
   └ 文件管理/system/fileSystem:File:List管理已上传文件。
运营监控/system/operations-运营工具组。
   └ 通知公告/system/noticeSystem:Notice:List系统范围的通知。
   └ 日志管理/system/logSystem:Log:List查看访问和操作日志。
   └ 参数配置/system/configSystem:Config:List全局系统配置。
   └ API 管理/system/apiSystem:Api:List管理后端 API 权限。
   └ 会话管理/system/sessionSystem:Session:List管理活跃用户会话。

前端集成

前端应用 (apps/web-ele) 从后端 API 获取用户的菜单结构。

  • API 接口: GET /menus
  • 逻辑: 后端过滤完整的菜单列表,仅返回分配给用户当前角色的项。
  • 可见性: 如果某个菜单未分配给用户的角色,它将不会出现在 API 响应中,因此也不会在侧边栏渲染。

权限代码 (authCode)

authCode 字段作为视觉菜单与功能性 API 权限之间的桥梁。

  • 当一个带有 authCode 的菜单被分配给用户时,系统也会授予他们该特定的权限代码(如:System:User:List)。
  • 这允许前端通过检查 hasPermission('System:User:List') 来有条件地渲染页面内部的按钮或元素,而不不仅仅是菜单项本身。