数据权限

数据权限是控制能够看到什么样的数据。比如在淘宝中,你只能看到你的账号下的订单,而无权看到别人的订单。数据权限具有相同的功能,根据设定,你只能看到你想要看到的数据,如果尝试通过修改 url 的 Id 去查看其它数据,数据权限同样会阻止这种非法操作(除非修改的 Id 确实是你可以看的)

数据权限采用配置插件的方式存在。框架预置了 RegDataRight、OwnerDataRight、OwnerOrgDataRight、CompositeDataRight、EmptyDataRight、CompanyUserDataRight、CompanyOrgDataRight 等 7 种数据权限控制方法。当然,如果你有额外的需求,比如允许共享数据,那么需要开发自己的配置插件来完成这种需求。(这些将在高级篇予以阐述)

<tk:Module>
  <tk:Source>
    <tk:SingleDbSource>
      <tk:Resolver>
        <tk:RegResolver>User</tk:RegResolver>
      </tk:Resolver>
      <tk:DataRight>
        <tk:OwnerDataRight NickName="CreateId"/>
      </tk:DataRight>
    </tk:SingleDbSource>
  </tk:Source>
</tk:Module>
  • EmptyDataRight
    空数据权限
<tk:EmptyDataRight AllowAll="true" />

AllowAll 为 true 允许查看所有数据,false 不允许查看所有数据

  • OwnerOrgDataRight
    检查记录是否是本组织的数据权限
<tk:OwnerOrgDataRight NickName="OrgID"/>

NickName 为数据记录存储组织的字段昵称

  • OwnerDataRight
    检查记录是否是本人的数据权限
<tk:OwnerDataRight NickName="CreateId"/>

NickName 为数据记录存储记录所有者的字段昵称

  • CompanyUserDataRight
    提供该用户以及该用户所有下属用户的数据权限(在 YJC.Toolkit.SimpleRight.dll 中)
<tk:CompanyUserDataRight NickName="CreateId"/>

NickName 为数据记录存储记录所有者的字段昵称

  • CompanyOrgDataRight
    提供该用户所有下属组织机构的数据权限(在 YJC.Toolkit.SimpleRight.dll 中)
<tk:CompanyOrgDataRight NickName="OrgId"/>

NickName 为数据记录存储组织的字段昵称

  • RegDataRight
    根据配置的注册名实例化数据权限
<tk:RegDataRight>myDataRight</tk:RegDataRight>

注意,这里的注册名 myDataRight 是指你实现 IDataRight 接口的类的名字。其实以上几种数据权限底层也是实现了 IDataRight 接口。如果你需要实现自己的数据权限控制,可以参考 YJC.Toolkit.SimpleRight 实现。

  • CompositeDataRight
    根据配置选择对应的数据权限
<tk:CompositeDataRight HasRightIfNoItem="false">
  <tk:RightItem Style="List">
    <tk:RegDataRight>myDataRight</tk:RegDataRight>
  </tk:RightItem>
</tk:CompositeDataRight>

HasRightIfNoItem:如果没有匹配的权限配置,标记是否有数据权限。默认为 false,即无数据权限

最后,以上配置必须在相应的DbSource上设置SupportData为true,否则不生效!!!

<tk:SingleDbSource SupportData="true">
</tk:SingleDbSource>