8 lines
4.5 KiB
JavaScript
8 lines
4.5 KiB
JavaScript
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('<h1 id="数据权限" tabindex="-1"><a class="header-anchor" href="#数据权限" aria-hidden="true">#</a> 数据权限</h1><p><img src="'+t+'" alt="数据权限"></p><h2 id="_1、数据权限方式一" tabindex="-1"><a class="header-anchor" href="#_1、数据权限方式一" aria-hidden="true">#</a> 1、数据权限方式一</h2><blockquote><p>此方式适合多表查询时筛选。</p></blockquote><div class="custom-container tip"><p class="custom-container-title">我们需要关心以下几点</p><p>1、界面角色管理 点击数据权限,配置好对应角色需要的数据权限</p><p>2、编写linq组合查询时需要 select new { _CreatorUserId = w.CreatorUserId ,_OrganizationId = w.OrganizationId } 返回 数据所属人的 CreatorUserId ,和数据所属组织的 OrganizationId</p><p>3、通过 awaitthis._defaultRepository.AsPagingViewAsync(query, page, size, null, accountInfo, w=>w._CreatorUserId, w=>w._OrganizationId); 依次函数传入 参数5、 参数6、 参数7 即可实现权限筛选</p></div><p><img src="'+o+`" alt="数据权限方式一"></p><h2 id="_2、数据权限方式二" tabindex="-1"><a class="header-anchor" href="#_2、数据权限方式二" aria-hidden="true">#</a> 2、数据权限方式二</h2><blockquote><p>此方式适合单表查询时筛选,CreatorUserId、CreationTime这两个字段是不需要自己手动填充,在插入数据时自动填充</p></blockquote><div class="custom-container tip"><p class="custom-container-title">这里举例有一个 Member 表 需要注意一下几点</p><p>1、界面角色管理 点击数据权限,配置好对应角色需要的数据权限</p><p><code>2、创建 Memeber 实体需要继承 CreateBaseEntity<TKey> 创建相关的父类 ,并且Member数据库表必须要有 CreatorUserId、CreationTime</code></p><p><code>3、我们可以在查询时调用 _defaultRepository.DataPermission(accountInfo,_sysUserRepository);</code></p><pre><code>入参1:当前登录用户信息 可实现结果得筛选
|
||
|
||
入参2(_sysUserRepository):用户仓储注入
|
||
</code></pre></div><div class="custom-container warning"><p class="custom-container-title">参数入口</p><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code>
|
||
<span class="token return-type class-name">IQueryable<span class="token punctuation"><</span>TModel<span class="token punctuation">></span></span> <span class="token generic-method"><span class="token function">DataPermission</span><span class="token generic class-name"><span class="token punctuation"><</span>TModel<span class="token punctuation">></span></span></span><span class="token punctuation">(</span><span class="token class-name">IQueryable<span class="token punctuation"><</span>TModel<span class="token punctuation">></span></span> query<span class="token punctuation">,</span> <span class="token class-name">AccountInfo</span> accountInfo<span class="token punctuation">,</span> <span class="token class-name">Expression<span class="token punctuation"><</span>Func<span class="token punctuation"><</span>TModel<span class="token punctuation">,</span> <span class="token keyword">object</span><span class="token punctuation">></span><span class="token punctuation">></span></span> userIdFieldNameExpression <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">,</span> <span class="token class-name">Expression<span class="token punctuation"><</span>Func<span class="token punctuation"><</span>TModel<span class="token punctuation">,</span> <span class="token keyword">object</span><span class="token punctuation">></span><span class="token punctuation">></span></span> organizationIdFieldNameExpression <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>query:查询表达式</p><p>accountInfo:当前登录用户信息</p><p>userIdFieldNameExpression:数据创建者Id</p><p>organizationIdFieldNameExpression:数据创建者所属组织Id</p></div>`,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};
|