U8开发之数据权限

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

U8开发之数据权限
摘要
设置用户、角色对应档案、单据的数据权限,用于控制后续业务处理中允许录入、查看的数据范围
支持记录级权限控制和字段级权限控制。

根据数据权限默认设置来决定某一系统是否需要权限控制
记录级权限支持VB版和Net版两个版本。

注意:870之后,字段权限增加了无权限。

什么是数据权限?
U8系统里的权限分为两种,一种是对功能权限进行控制,另一种则是对系统中的每一行数据或者一部分数据中的敏感字段进行控制,不同的人授予不同的权限,增强系统的安全性和保密性,达到最终的管理目标。

目标
本文主要介绍数据权限的基础知识,应用过程及相关注意事项,方便各类U8产品开发人员更好的使用数据权限,更高效的开发产品。

数据权限可以做什么?
数据权限是软件系统中开发中必不可少的功能,它是整个软件安全的一部分。

1.V10.1及之前版本数据权限特性
由于V11.0版本只是在数据权限中增加和调整了一部分管理维度权限,其他内容均和之
前版本相似,所以这里不做重点的讲解,这些版本的程序引用和调用方法模式没有变化。

使用方式将在如何使用数据权限中介绍。

2.V11特性
a)支持管理维度控制
对于客户、客户联系人、服务、线索、行动、竞争对手、竞争订单等一些特殊的业务对象进行多维度的控制,来达到更复杂的数据安全管理需求。

目前支持7个维度的控制,分别为相关/负责人员、部门、管理维度1、管理维度2、管理维度3、管理维度4、客户权限维度,其中相关/负责人员的数据来源于系统操作员,部门档案维度的数据来源于部门档案,管理维度1到4以及客户权限维度均由用户自己定义数据来源。

管理维度1、管理维度2、管理维度3、管理维度4、客户权限维度用户可自行定义名称
数据来源可以选择手工录入,也可选择来源于系统档案
当选择手工输入时,则需要客户自行定义维度档案
当选择来源于系统档案时,则无需维护维度档案,只需维护已有的系统档案即可 可以选择启用还是关闭启用
3.数据字典
a)V11.0数据字典
如何使用数据权限?
1.老版本数据权限(870)
a)记录级服务U8RowAuthsrv.dll
在VB中引用U8RowAuthsrv组件
在VB中点击主菜单中的“工程->引用”,随后出现的“引用”对话框中选中“U8RowAuthsrv”,然后点击“确定”,如下图所示:
dll文件的方法函数图例如下
GetAuthString方法
返回对某个表的拥有的权限的SQL条件串没有权限返回1=2;有全部权限返回空字符串;有权限返回条件串。

对客户、供应商、存货有权限分类的,返回OR字符串,如IID=2 or IID=3 '对其他档案返回In条件串,字段关键字由外部系统拚,如: in ('001','002') ;对其他业务对象,为避免SQL语句超长,返回Select…子查询,而不是逗号分割的字符串。

如部门: in (select cACCode from aa_holdauth where cUserId='demo' and cBusObId='department')
注意:用户继承用户组的权限
语法
object. GetAuthString (cBusObId As String, [cClassCode As String], [cFuncId as String])
as string
IsHoldAuth方法
返回是否对某个表的某行纪录拥有权限
注意:当业务对象是user时,特殊处理操作员对自身有查询权限
语法
object. IsHoldAuth(cBusObId As String, cValue As String, cClassCode As String, cFuncId As String) as string
NeedControlAuth方法:
指定业务对象是否受权限控制
'输入参数:cBusObId 业务对象
'输出参数:无
'返回值:true 受权限控制,false不受权限控制
'功能:
语法
object.NeedControlAuth(ByVal cBusObId As String) As Boolean
NeedControlAuth方法的语法包含下列部分:
b)字段级服务U8ColAuthsrv.dll
在VB中引用U8ColAuthsrv.组件
在VB中点击主菜单中的“工程->引用”,随后出现的“引用”对话框中选中“U8ColAuthsrv.”,然后点击“确定”,如下图所示:
GetAuthString方法
返回对某个字段拥有的权限的字符串, 一般来说,返回逗号分割的字符串
注意:用户继承用户组的权限
语法
object. GetAuthString (cBusObId As String) as string
返回值:
返回指定业务对象中拥有指定权限(已分配权限)的字段集合。

备注:调用方的思路必须有所转变,如果询问拥有写权限的字段集合,应该考虑除了已经明确分配的写权限,还包括未被分配的权限,因为未被分配的权限默认拥有读和写;对字段权限的控制应该考虑无权限和读权限的访问,拥有所有权限的服务效率会有问题。

组件:UFSoft.U8.Framework.SecurityCommon(Net版本)
在VS2005中使用权限组件
1、新建立一个VS2005类库项目
2、在项目中添加下面DLL的引用
%U8Soft%\ AppServer\Bin\Framework\UFSoft.U8.Framework.SecurityCommon.dll
dll文件的方法函数图例如下
GetAuthString方法
返回对某个业务对象拥有的权限的SQL条件串,没有权限返回1=2;有全部权限返回空字符串;对除了User业务对象,均返回Select…子查询,user对象返回逗号分割的字符串。

如部门: in (select cACCode from aa_holdauth where cUserId='demo' and cBusObId='department')
注意:用户继承用户组的权限
语法
object. GetAuthString (cBusObId As String, [cClassCode As String], [cFuncId as String])
as string
GetAuthString方法的语法包含下列部分:
2.V11.0版本应用数据权限
在V11.0版本中,如要控制某一个业务对象的数据权限,只需要选择启用该数据权限,然后为用户分配不同的数据权限。

首先启用该数据权限,数据权限分记录级权限和字段级权限。

然后分配不同的数据权限
字段级:
字段级:
维度控制方式:
二次开发应用数据权限
a)数据预置
相关数据结构在二次开发数据字典的aa_busobject_base表和AA_RowAuthDic_base 中,可查阅相关内容。

b)产品开发
具体开发方式与老版本一致,内部逻辑中虽然添加了管理维度权限,但接口和函数没有变化,只有数据库是有变化的。

c)应用技巧
字段权限的映射关系可以通过UAP中商业敏感工具来实现
栏目的预制数据可以使用UAP的栏目设计器增加
相关知识
在U8系统中选择一个业务对象控制,然后控制其数据权限,然后给不同的用户分配
不同的权限,并配合角色权限,然后使用不同的用户进入该业务对象模块,看看数据
权限是否控制正确。

相关文档
最新文档