ContiNew
系统管理

角色管理

角色的功能权限、数据权限与关联用户分配,以及内置角色的保护规则。

本文是 4.x 的归档文档(冻结于 v4.2.0)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 4.2.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 4.2.x 上运行的项目,本文仍是可靠依据。

角色是权限分配的中间层,用户通过关联角色获得菜单、按钮等「功能权限」和数据行可见范围的「数据权限」。功能入口在「系统管理 -> 角色管理」,后端接口前缀为 /system/role,对应 RoleController。角色数据存储在 sys_role 表,与菜单、部门的关联分别存储在 sys_role_menu、sys_role_dept 表。

功能概览

功能接口权限码
列表/详情/新增/修改/删除@CrudRequestMapping("/system/role") 自动生成system:role:list 等
查询角色权限树GET /system/role/permission/treesystem:role:updatePermission
修改功能权限PUT /system/role/{id}/permissionsystem:role:updatePermission
分页查询关联用户GET /system/role/{id}/usersystem:role:list
分配用户POST /system/role/{id}/usersystem:role:assign
取消分配用户DELETE /system/role/usersystem:role:unassign
查询关联用户 IDGET /system/role/{id}/user/idsystem:role:list

角色字段

sys_role 表的主要字段如下。

字段说明
name角色名称,唯一
code角色编码,唯一,前端 v-role 指令与编程式 hasRole 按编码判断
data_scope数据权限范围,默认 4(仅本人)
menu_check_strictly菜单选择是否父子节点关联,默认关联
dept_check_strictly部门选择是否父子节点关联,默认关联
is_system是否系统内置数据
sort排序,默认 999

功能权限

功能权限通过「修改权限」接口维护,将角色与菜单树(sys_menu)中的目录、菜单、按钮绑定,关联写入 sys_role_menu 表。

勾选时 menu_check_strictly 控制父子节点是否联动。联动模式下勾选子节点会带上父节点;不联动时可单独勾选某个按钮而不挂整棵分支,适合精细授权。用户登录后,其全部角色的权限标识并集决定可见路由与可用按钮,后端接口由 @SaCheckPermission 逐项拦截。超级管理员角色的权限为通配符 *:*:*,自动通过所有校验。

数据权限

数据权限由 data_scope 字段定义,取值来自 DataScopeEnum,控制查询时可触达的数据行范围。

取值说明
1全部数据权限
2本部门及以下数据权限
3本部门数据权限
4仅本人数据权限
5自定义数据权限

取值为 5 时,可见部门集合来自 sys_role_dept 表(dept_check_strictly 控制勾选联动)。实现上由 continew-starter-extension-datapermission-mp 在 SQL 层追加条件,当前用户的数据范围由 DefaultDataPermissionUserDataProvider 提供,已接入的 Mapper 有 UserMapper、AppMapper。机制细节见 ContiNew Starter 数据权限文档。

分配用户

角色页提供「分配用户」能力,支持从角色视角批量绑定(POST /system/role/{id}/user)与解绑(DELETE /system/role/user)用户。从用户视角调整角色则使用用户管理的「分配角色」,见用户管理。

初始化脚本内置超级管理员角色(super_admin,is_system = 1),系统内置角色与用户禁止变更。普通角色若仍有关联用户,删除前请先解除关联。

相关源码

目录