数据权限
功能概述
数据权限模块实现基于组织架构的数据隔离。通过 IDataPermission 接口标记实体,系统自动在查询时追加当前用户所在部门的过滤条件,确保用户只能查看本部门及子部门的数据。管理员角色不受数据权限限制,可查看全部数据。
实现原理
接口定义
实体实现 IDataPermission 接口:
public interface IDataPermission
{
long OrgId { get; set; }
}
自动过滤
在 AdminTable 上启用 UseDataPermission 后,查询时自动追加 OrgId 过滤条件:
<AdminTable TItem="SysOrder" UseDataPermission="true" ... />
自动赋值
新增记录时,系统通过 RepositoryOptions.AuditValue 自动将当前用户的 OrgId 写入实体的 OrgId 字段。
权限范围
- 非管理员用户:只能查看自己所在部门及所有子部门的数据
- 管理员角色(
IsAdministrator = true):不受限制,可查看全部数据
使用方法
为实体启用数据权限
- 让实体类实现
IDataPermission接口,添加OrgId属性。 - 在
AdminTable组件上设置UseDataPermission="true"。
验证数据权限
- 使用非管理员账号登录,验证只能看到本部门及子部门的数据。
- 切换部门后,数据范围自动调整。
相关接口/服务
IDataPermission— 数据权限接口RepositoryOptions.AuditValue— 自动赋值机制AdminTable.UseDataPermission— 表格启用开关