import{_ as n,o as a,c as s,a as e}from"./app-4f4af2d5.js";const t="/docs/hzy-admin/permission/data-1.jpg",o="/docs/hzy-admin/permission/data-2.jpg",p={},c=e('

数据权限

数据权限

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

`,10),i=[c];function r(l,u){return a(),s("div",null,i)}const k=n(p,[["render",r],["__file","data.html.vue"]]);export{k as default};