跳转到内容

账号、角色与数据权限

Modu 使用角色权限控制功能访问,使用 DataScope 数据权限控制记录范围。能看到页面或按钮,不代表能读写全部记录。

先建立部门与账号,再为角色分配功能菜单、按钮权限和数据范围,最后将角色关联到账号。菜单启用状态、角色关联和服务端权限声明共同决定可用能力。

例如商品列表接口声明 example:product:list。角色拥有该权限才能调用接口,接口内部还会根据当前账号的数据范围筛选商品创建者。

DataScope 可见范围
all 全部数据
dept_and_children 本部门及子部门
dept 本部门
custom 角色指定的部门
self 本人数据

多个角色的数据范围取并集。业务服务必须显式应用范围过滤,并在单条记录读取、修改、删除及批量操作时检查归属。它不是自动过滤所有 ORM 查询的全局拦截器。

新增业务可参考商品样板的 sdk.VisibleOwnerIDs 和详情、写入时的归属检查。管理员的功能权限也不能代替审批任务的真实办理席位。

子菜单的路径以父目录路径为前缀。例如通知管理 /notify 的子页面使用 /notify/...。ProLayout 根据路径前缀判断展开目录,路径与层级不一致会引起误展开。

页面路径和权限码用途不同:路径用于导航,权限码用于授权。前端隐藏按钮用于引导用户,服务端仍会重新核对当前权限。

应用菜单参与核心首次安装的授权事务。重跑种子不会恢复管理员已撤销的授权,也不会擅自恢复已经停用或删除的菜单。

审批导航和文件扩展有单独的启用要求。新页面不可见时,依次检查菜单状态、角色关联、功能权限及扩展状态,再检查前端 catalog 是否对应当前后端。

实现自己的业务接口,继续阅读后端业务开发