数据权限

功能概述

数据权限模块实现基于组织架构的数据隔离。通过 IDataPermission 接口标记实体,系统自动在查询时追加当前用户所在部门的过滤条件,确保用户只能查看本部门及子部门的数据。管理员角色不受数据权限限制,可查看全部数据。

实现原理

接口定义

实体实现 IDataPermission 接口:

public interface IDataPermission
{
    long OrgId { get; set; }
}

自动过滤

AdminTable 上启用 UseDataPermission 后,查询时自动追加 OrgId 过滤条件:

<AdminTable TItem="SysOrder" UseDataPermission="true" ... />

自动赋值

新增记录时,系统通过 RepositoryOptions.AuditValue 自动将当前用户的 OrgId 写入实体的 OrgId 字段。

权限范围

  • 非管理员用户:只能查看自己所在部门及所有子部门的数据
  • 管理员角色(IsAdministrator = true):不受限制,可查看全部数据

使用方法

为实体启用数据权限

  1. 让实体类实现 IDataPermission 接口,添加 OrgId 属性。
  2. AdminTable 组件上设置 UseDataPermission="true"

验证数据权限

  • 使用非管理员账号登录,验证只能看到本部门及子部门的数据。
  • 切换部门后,数据范围自动调整。

相关接口/服务

  • IDataPermission — 数据权限接口
  • RepositoryOptions.AuditValue — 自动赋值机制
  • AdminTable.UseDataPermission — 表格启用开关