数据权限
数据权限是控制能够看到什么样的数据。比如在淘宝中,你只能看到你的账号下的订单,而无权看到别人的订单。数据权限具有相同的功能,根据设定,你只能看到你想要看到的数据,如果尝试通过修改 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>