角色与权限

管理角色和权限,通过 RBAC 体系控制用户访问范围

角色与权限

欣悦互通采用 RBAC(基于角色的访问控制)体系管理用户权限。通过将权限分配给角色、再将角色分配给用户的方式,实现灵活且可复用的权限管理。

本篇介绍如何创建角色、分配权限、管理菜单,以及通过版本体系控制功能可见性。

RBAC 概念

RBAC 的核心思想是「用户 → 角色 → 权限」三层关系:

  • 用户:系统中的实际使用者,一个用户可拥有多个角色。
  • 角色:权限的集合,如「管理员」「运营」「只读用户」。
  • 权限:对系统资源的访问能力,如「查看 GEO 项目」「创建内容」「删除用户」。

通过角色作为中间层,可以批量管理用户权限。当业务变化时,只需调整角色对应的权限,所有拥有该角色的用户权限会自动更新。

!NOTE 欣悦互通的权限粒度细到按钮级别(如「删除」按钮的可见性),通过 v-access 指令在前端控制。

角色管理

查看角色列表

  1. 进入「系统管理 → 角色管理」查看当前租户下的所有角色。
  2. 列表展示角色名称、描述、关联用户数、创建时间。
  3. 支持按角色名称搜索。

创建角色

  1. 在角色列表页点击「新增」按钮。
  2. 填写角色名称和描述。
  3. 在「权限分配」区域勾选该角色拥有的权限。
  4. 在「菜单分配」区域勾选该角色可见的菜单。
  5. 点击「确定」保存。

系统调用 POST /api/system/roles(或 POST /api/roles)创建角色,角色与权限、菜单的关联关系会一并保存。

编辑和删除角色

  1. 在角色列表中点击「编辑」修改角色信息、权限或菜单。
  2. 点击「删除」移除角色。

!WARNING 删除角色前,请确保该角色下没有关联的用户。如有用户仍使用该角色,需先将用户迁移到其他角色,否则删除操作将被拒绝。

权限列表与同步

查看权限列表

进入「系统管理 → 权限管理」可查看系统中所有已定义的权限项,包括:

  • 权限编码(如 geo:project:create
  • 权限名称
  • 所属模块
  • 权限类型(菜单/按钮/接口)

权限列表通过 GET /api/system/permissions 获取。

权限同步

当系统升级、新增功能模块后,权限项可能发生变化。点击「同步权限」按钮,系统将调用 POST /api/permissions/sync 扫描所有路由和按钮,自动注册新的权限项。

!TIP 建议每次系统升级后执行一次权限同步,确保新功能的权限项可用,然后再到角色管理中为相应角色分配新权限。

角色菜单分配

菜单分配决定角色用户在后台能看到哪些导航菜单。每个菜单项可单独勾选,支持按模块批量分配。

  1. 在角色编辑页切换到「菜单分配」标签。
  2. 通过树形勾选组件选择可见菜单。
  3. 父菜单选中后,子菜单默认全部选中。
  4. 点击「确定」保存。

菜单数据通过 GET /api/menus/tree 以树形结构返回,便于在前端展示层级关系。

版本体系管理

版本体系用于控制不同套餐或版本下的功能可见性。例如「基础版」看不到「AI 对话」功能,「专业版」则可使用全部功能。

创建版本

  1. 进入「系统管理 → 版本管理」。
  2. 点击「新增」填写版本名称、版本标识、排序。
  3. 在「功能列表」中为该版本配置可用的功能项。
  4. 点击「确定」保存。

版本管理通过 GET/POST /api/editions 创建,GET /api/editions/{id}/features 查询版本下的功能列表。

版本与角色配合

版本体系控制功能级可见性,角色权限控制操作级权限。两者配合实现:某功能在当前版本可见,但只有特定角色才能操作。

菜单管理

菜单管理用于维护后台的导航结构,包括菜单项的层级、排序、图标和关联路由。

  1. 进入「系统管理 → 菜单管理」查看菜单列表。
  2. 点击「菜单树」可查看层级结构视图。
  3. 点击「新增」创建菜单项,填写:菜单名称、上级菜单、路由路径、图标、排序、权限编码。
  4. 点击「编辑」或「删除」修改或移除菜单项。

菜单数据通过 GET/POST /api/menusGET /api/menus/tree 管理接口操作。

!WARNING 删除菜单前请确保没有子菜单,且该菜单未被任何角色引用。删除父菜单会级联删除所有子菜单,请谨慎操作。

v-access 权限指令

前端通过 v-access:code 指令控制按钮级权限。例如:

<tiny-button v-access:code="'geo:project:create'">新增项目</tiny-button>

只有当前用户角色包含 geo:project:create 权限时,该按钮才会显示。指令由 vben5 框架原生支持,无需额外配置。

!TIP 开发自定义页面时,建议为所有敏感操作按钮添加 v-access:code,避免越权操作。

相关链接

此页有帮助吗?

订阅最新资讯

获取 GEO 优化前沿动态与行业洞察