数据权限

数据权限

1、数据权限方式一

此方式适合多表查询时筛选。

我们需要关心以下几点

1、界面角色管理 点击数据权限,配置好对应角色需要的数据权限

2、编写linq组合查询时需要 select new { _CreatorUserId = w.CreatorUserId ,_OrganizationId = w.OrganizationId } 返回 数据所属人的 CreatorUserId ,和数据所属组织的 OrganizationId

3、通过 awaitthis._defaultRepository.AsPagingViewAsync(query, page, size, null, accountInfo, w=>w._CreatorUserId, w=>w._OrganizationId); 依次函数传入 参数5、 参数6、 参数7 即可实现权限筛选

数据权限方式一

2、数据权限方式二

此方式适合单表查询时筛选,CreatorUserId、CreationTime这两个字段是不需要自己手动填充,在插入数据时自动填充

这里举例有一个 Member 表 需要注意一下几点

1、界面角色管理 点击数据权限,配置好对应角色需要的数据权限

2、创建 Memeber 实体需要继承 CreateBaseEntity<TKey> 创建相关的父类 ,并且Member数据库表必须要有 CreatorUserId、CreationTime

3、我们可以在查询时调用 _defaultRepository.DataPermission(accountInfo,_sysUserRepository);

入参1:当前登录用户信息 可实现结果得筛选          

入参2(_sysUserRepository):用户仓储注入

参数入口


IQueryable<TModel> DataPermission<TModel>(IQueryable<TModel> query, AccountInfo accountInfo, Expression<Func<TModel, object>> userIdFieldNameExpression = null, Expression<Func<TModel, object>> organizationIdFieldNameExpression = null);

query:查询表达式

accountInfo:当前登录用户信息

userIdFieldNameExpression:数据创建者Id

organizationIdFieldNameExpression:数据创建者所属组织Id

Last Updated:
Contributors: hzy