技能培训专题:加密与权限控制开发手册_第1页
技能培训专题:加密与权限控制开发手册_第2页
技能培训专题:加密与权限控制开发手册_第3页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、加密与权限控制开发手册1. 加密控制 1.1功能介绍:加密控制在登录组件中实现,通过一次完整的登录过程,判断用户许可数。如果没有购买加密狗,产品允许使用演示版三个月,如果购买了加密狗,超过许可数的用户,仍然只能使用演示版;所有产品,超过演示期,一律禁止使用。目前支持两种许可方式:单个模块的许可和包的许可; 1.按单个模块的许可 每个模块独立计算许可,一个客户端使用多个不同的模块,则统计占用了多个许可. 2.按包的许可以包统计许可,没有模块的概念,整个包近似于一个大的模块,计算许可的时候,按照客户端来统计,一个客户端可以使用多个模块(如果这些模块在同一个包中),只算一个许可 .1.2使用环境:支

2、持通狗和产品狗;开发环境要求必须在 Microsoft.NET 的 Framework 2.0.50727 版本下进行1.3使用说明:组件:UFSoft.U8.Framework.Login.UI 在VB中引用登录组件1在VB中点击主菜单中的“工程-引用”,随后出现的“引用”对话框中选中“UFSoft_U8_Framework_Login_UI”,然后点击“确定”,如下图所示:备注:如果找不到UFSoft.U8.Framework.Login.UI.tlb ,可以在命令行中执行如下命令,如下图:dll文件的方法函数图例如下登录组件提供的主要方法:1.login方法对外提供的登录接口,支持不要登

3、录界面的登录认证(如果参数都输全了)语法Bool login(string pSubId,string UserId, string Pwd, string appServer,string operDate,string dataSource,string WorkStationSerial) login方法的语法包含下列部分:部分描述pSubId必需的。子产品号dataSource可选项,数据源UserId可选项, 用户编号Pwd可选项, 用户密码appServer可选项, 应用服务器名operDate可选项, 注册日期WorkStationSerial可选项, 硬件序列号(必须全球唯一)

4、返回值:true 成功False失败 举例Private Sub mnu_login_Click(Index As Integer)Dim pSubId As StringDim pUserId As StringDim pPassword As StringDim cSrv As StringDim pDate As StringDim pAccId As StringDim cSerial As StringpSubId = GLpUserId = demopPassword = cSrv = echocloudpDate = 2006-11-01pAccId = (default)001

5、cSerial = If ologin.login(pSubId, pUserId, pPassword, cSrv, pDate, pAccId, cSerial) = False Then MsgBox m_NewLogin.ErrDescript Else MsgBox login ok End IfEnd Sub2.SubLogin方法主要完成门户的登录后对子系统登录的校验工作,主要包括加密许可的控制,如果超过许可数,并且已经过三个月的演示期,则返回nothing.语法ProductContext SubLogin(string SubId) SubLogin方法的语法包含下列部分:部

6、分描述SubId必需的。子产品号返回值: 产品在登录后在当前进程空间所保留的上下文举例Private Sub mnu_sublogin_Click(Index As Integer)第二步:子系统登录 Set oLoginContext = ologin.SubLogin(GL) If oLoginContext Is Nothing Then MsgBox ologin.ErrDescript Else MsgBox sublogin ok. End IfEnd Sub3SubLogout方法子系统注销,释放登录时占用的许可,与SubLogin成对出现语法void SubLogout(str

7、ing SubId) SubLogout方法的语法包含下列部分:部分描述SubId必需的。子产品号举例ologin.SubLogout (GL)4.ShutDown方法在进行完成相应的登陆流程后,必须通过通过该方法来关闭该控件,否则会浪费系统资源,与login成对出现语法void ShutDown() 举例ologin.ShutDown5.IsDemoToSubSystem方法得到子系统是否是演示版,如果是演示版,建议在界面上警告用户语法bool IsDemoToSubSystem(string UserToken,string SubID) IsDemoToSubSystem方法的语法包含下

8、列部分:部分描述UserToken必需的。登录令牌SubID必需的。子产品号返回值:true演示版Fasle正式版登录组件提供的公共属性1.ErrDescript返回错误信息,所有登录组件提供的方法,如果返回值是布尔型且为false,则通过这个属性可以查看详细信息语法string ErrDescriptget;1.4应用案例:新增模块的步骤:1 注册到数据库中可以调用存储过程sp_LoadUASubsys_Base举例:新增模块:DM,中文名称:宿舍管理,EXECUTE sp_LoadUASubsys_Base DM,N宿舍管理,zh-CN,642 刷加密狗,统一由总部将新增产品写到加密狗中,

9、并需通知平台的人处理3 直接调用登录组件就可以满足加密控制1.5应用技巧:开发技巧介绍;1.6应用习题:1 新增模块,进行加密控制;2 进行演示期的判断2. 功能权限控制 2.1功能介绍:功能权限控制提供了两个版本,VB版和Net版。VB版主要给客户端使用,Net版主要给服务端使用。主要根据互斥级别,进行功能的申请和释放,注意:功能权限只处理末级权限。2.2使用环境:2.3使用说明:组件:U8Login(VB版本)在VB中引用U8Login组件在VB中点击主菜单中的“工程-引用”,随后出现的“引用”对话框中选中“U8login”,然后点击“确定”,如下图所示:dll文件的方法函数图例如下U8L

10、ogin提供的主要方法:1TaskExec方法系统功能的申请和释放。根据参数的不同可以执行不同类型的功能申请语法object. TaskExec(ByVal pAuth_id As String, ByVal bIsLock As Integer, Optional ByVal iYear As Integer) As Boolean TaskExec方法的语法包含下列部分:部分描述Object必需的。代表一个对象表达式,其值是U8login对象pAuth_id必需的。bIsLock=10子产品号其余功能号bIsLock必需的。申请锁的类型10判断当前子系统是否已买授权2仅判断当前操作员是否对

11、功能pAuth_id在登录的账套、年度里具有操作权限,不判断功能号是否存在,推荐使用=11判断当前操作员在登录账套是否有功能权限,可以切换年度,不输,默认登录年度1 判断当前操作员是否有功能权限且申请的功能权限是否与其他正在运行的功能互斥0 释放权限3 同1,特殊处理authtype=3的功能,bIsLock = 3要求与非本机本模块的reg互斥iYear可选项, 年度返回值:True成功False失败举例执行功能申请Private Sub mnu_taskApply_Click() Call vblogin.ConstructLogin(ologin.userToken) vblogin.T

12、askId = ologin.GetTaskID(GL) If vblogin.login(GL) = False Then MsgBox create u8login failed + vblogin.ShareString Exit Sub End If If vblogin.TaskExec(WA01012, -1) = False Then If vblogin.LogState 0 Then MsgBox vblogin.ShareString Else MsgBox 出现无法预知的错误,无法申请功能! End If Exit Sub Else MsgBox OK_WA01012 E

13、nd IfEnd Sub2. TaskExecEx方法执行功能申请,判断业务的互斥操作,提供按照分类进行授权语法object. TaskExecEx(ByVal pAuth_id As String, ByVal bIsLock As Integer, Optional ByVal iYear As Integer,Optional ByVal pAuthClassCode As String = ) As Boolean TaskExecEx方法的语法包含下列部分:部分描述Object必需的。代表一个对象表达式,其值是U8login对象pAuth_id必需的。bIsLock=10子产品号其余

14、功能号bIsLock必需的。申请锁的类型10判断当前子系统是否已买授权2仅判断当前操作员是否对功能pAuth_id在登录的账套、年度里具有操作权限,不判断功能号是否存在,推荐使用=11判断当前操作员在登录账套是否有功能权限,可以切换年度,不输,默认登录年度1 判断当前操作员是否有功能权限且申请的功能权限是否与其他正在运行的功能互斥0 释放权限3 同1,特殊处理authtype=3的功能,bIsLock = 3要求与非本机本模块的reg互斥iYear可选项, 年度pAuthClassCode业务分类,如:工资类别,如果输入这个参数,意味着虽然在互斥表中这两个功能互斥,但是只要工资类别不相同,则认

15、为此两个功能不互斥返回值:True成功False失败组件:UFSoft.U8.Framework.SecurityCommon(Net版本)在VS2005中使用权限组件1、 新建立一个VS2005类库项目2、 在项目中添加下面DLL的引用%U8Soft% AppServerBinFrameworkUFSoft.U8.Framework.SecurityCommon.dll%U8Soft% AppServerBinFramework UFSoft.U8.Framework.LoginContext.dlldll文件的方法函数图例如下UFSoft.U8.Framework.SecurityComm

16、on提供的主要方法:1TaskExec方法系统功能的申请和释放。根据参数的不同可以执行不同类型的功能申请语法bool TaskExec(string pAuth_id ,short bIsLock ,short iYear ) TaskExec方法的语法包含下列部分:部分描述pAuth_id必需的。bIsLock=10子产品号其余:功能号bIsLock必需的。申请锁的类型10判断当前子系统是否已买授权2仅判断当前操作员是否对功能pAuth_id在登录的账套、年度里具有操作权限,不判断功能号是否存在,推荐使用=11判断当前操作员在登录账套是否有功能权限,可以切换年度,不输,默认登录年度1 判断当

17、前操作员是否有功能权限且申请的功能权限是否与其他正在运行的功能互斥0 释放权限3 同1,特殊处理authtype=3的功能,bIsLock = 3要求与非本机本模块的reg互斥iYear年度返回值:True成功False失败举例private void moduleAuth_Click(object sender, EventArgs e) CalledContext Context = new CalledContext(); Context.subId = FA; Context.token = Login.userToken; ModuleAuth auth = new ModuleAu

18、th(Context); if (!auth.TaskExec(FA0515, -1) if (auth.ErrNumber != 0) MessageBox.Show(auth.ErrDescript); else MessageBox.Show(出现无法预知的错误,无法申请功能); else MessageBox.Show(OK_WA011701); 2.4应用案例:功能权限支持权限的互斥控制,通过预制数据到ua_control中实现。字段名说明数据类型长度是否可空主键外键约束cAuth_Id功能编号nvarchar120UA_Auth.cAuth_IdiAuthType权限类型(取值0、

19、1、2、3、4)tinyint11cRepellent互斥功能编号(当iAuthType=0时为互斥功能编号,其他为Null)nvarchar121UA_Auth.cAuth_IdcRepellentModule互斥模块标识(当iAuthType=4时为互斥模块标识,其他为Null)nvarchar21UA_SubSys.cSub_IdcNotRepellent不互斥功能编号(当iAuthType=3时为不互斥功能编号,其他为Null)nvarchar121UA_Auth.cAuth_Id目前支持的互斥级别1) IAuthType = 0(功能级互斥)表示cAuth_Id功能与cRepelle

20、nt功能互斥,即两个功能不能同时执行。例:AA0001与AA0002的互斥记录, AA0001、0、AA0002、Null、Null 注意:对同一功能编号可有多条功能级互斥记录。2) iAuthType = 1(年度级互斥)表示账套内某年度级别的互斥。例:有记录AA0003、1、Null、Null、Null 表示执行AA0003功能时该账套该年度内不能执行任何功能。但若在该账套内登录其他会计年度则可执行所需功能。注意:对同一功能编号只能有一条年度级互斥记录。3) iAuthType = 2(账套级互斥)表示账套级别的互斥。例:有记录AA0004、2、Null、Null、Null 表示执行AA0

21、004功能时该账套内的各年度都不能执行任何功能。但若登录其他账套可执行所需功能。注意:对同一功能编号只能有一条账套级互斥记录。4) iAuthType = 3(模块内互斥)表示账套内某年度内模块级别的互斥。模块内互斥分为如下两种情况:a) 有记录GL0001、3、Null、Null、Null 表示执行GL0001功能时该账套内、当前年度内、GL模块内不能执行任何功能而可执行该账套内当前年度的其他模块的功能。b) 有记录GL0002、3、Null、Null、GL0003、GL0002、3、Null、Null、GL0004表示执行GL0002功能时该账套内、当前年度内、GL模块内不能执行任何功能而

22、可执行GL模块内的GL0003、GL0004功能,同时该账套内当前年度的其他模块的功能可执行。注意:上述两种情况只能选择一种,若为第一种情况,则对同一功能编号只能有一条模块内互斥记录;若为第二种情况,则对同一功能编号可有多条模块内不互斥记录。5) iAuthType = 4(模块组互斥)表示账套内某年度内模块组的互斥。例:有记录AA0005、4、Null、GL、Null 、AA0005、4、Null、AR、Null 表示执行AA0005功能时,该账套内、当前年度的GL模块、AR模块的所有功能不能执行,而可执行该账套内当前年度的其他模块的功能。当要执行某模块的某项功能XXXX时,应检查该模块有无

23、iAuthType=4的记录,若有则再检查上述记录涉及的功能是否正在执行,若有这样的功能正在执行,则功能XXXX不能执行。注意:对同一功能编号可有多条模块组互斥记录。6) 对于UA_Control表中没有记录的功能,定义为共享功能,但根据互斥的对称性,共享功能的共享也有如下限制:a. 在一个账套内,若有账套级互斥功能正在执行,则任何共享功能不能执行;b. 在一个账套的一个年度内,若有账套级互斥、年度级互斥功能正在执行,则任何共享功能不能执行;c. 在一个账套、一个年度的某一模块内,若有账套级互斥、年度级互斥、模块内互斥功能正在执行,则任何共享功能不能执行;但若只有模块内互斥功能在执行,则它的不

24、互斥功能可执行;d. 在一个账套、一个年度内,若有账套级互斥、年度级互斥、模块内互斥、模块组互斥功能正在执行,则任何共享功能不能执行。备注:a.增加一个新的权限,必须执行sp_CaculateSupAuth,提前计算一个功能点的所有父结点,给门户使用。b.新增/修改互斥信息 ,首先清除ua_auth_base中的cauthType字段,然后执行sp_CalculateAuthType,提前计算互斥关系到缓存中,提高效率2.5应用技巧:调试功能申请,必须使用调试版的u8login2.6应用习题:1.新增一个功能权限,调用功能申请(VB)2.新增一个功能权限,调用功能申请(Net)3. 数据权限控

25、制 3.1功能介绍:设置用户、角色对应档案、单据的数据权限,用于控制后续业务处理中允许录入、查看的数据范围支持记录级权限控制和字段级权限控制。根据数据权限默认设置来决定某一系统是否需要权限控制记录级权限支持VB版和Net版两个版本。注意:字段权限增加了无权限。3.2使用环境:3.3使用说明:记录级服务 U8RowAuthsrv.dll在VB中引用U8RowAuthsrv组件在VB中点击主菜单中的“工程-引用”,随后出现的“引用”对话框中选中“U8RowAuthsrv”,然后点击“确定”,如下图所示:dll文件的方法函数图例如下方法GetAuthString方法返回对某个表的拥有的权限的SQL条

26、件串没有权限返回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,

27、 cClassCode As String, cFuncId as String)as stringGetAuthString方法的语法包含下列部分:部分描述Object必需的。代表一个对象表达式,其值是记录集权限服务对象cBusObId业务对象IDcClassCode可选项。项目大类(项目专用)cFuncId可选项。功能ID设置值cBusObId的设置值有:值描述code科目Customer客户djmb单据模版dsign凭证类别gzauth工资权限Vendor供应商Inventory存货Department部门Person职员unit资金单位Warehouse仓库Position货位user

28、用户djsj单据设计U8fore报账中心Company集团企业目录Fitem项目大类表名cFuncId的设置值有:值描述R(ead)查询/查账W(rite)删改/录入/制单V(erify)审核U(nverify)弃审C(lose)关闭举例Private Sub mnu_rowauth_Click() Dim oRow As New clsRowAuth Dim ret As String Dim constring As String constring = Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;password=;

29、Initial Catalog=UFDATA_001_2007;Data Source=echocloud; oRow.Init constring, demo, False ret = oRow.GetAuthString(unit, , W) MsgBox retEnd SubIsHoldAuth方法返回是否对某个表的某行纪录拥有权限注意:当业务对象是user时,特殊处理操作员对自身有查询权限语法object. IsHoldAuth(cBusObId As String, cValue As String, cClassCode As String, cFuncId As String)

30、as stringIsHoldAuth方法的语法包含下列部分:部分描述Object必需的。代表一个对象表达式,其值是记录级权限服务对象cBusObId 业务对象ID,值同于方法GetAuthString中的参数cBusObIdcValue 字段值cClassCode可选项,项目大类(项目专用)cFuncId可选项,功能ID,值同于方法GetAuthString中的参数cFuncId返回值:True有权限 False 没有权限 举例对部门编码001有无读权限oRow.isHoldAuth(“department”,”001”,”,”R”)NeedControlAuth方法指定业务对象是否受权限控

31、制输入参数:cBusObId 业务对象输出参数:无返 回 值:true 受权限控制,false不受权限控制功 能: 语法object.NeedControlAuth(ByVal cBusObId As String) As Boolean NeedControlAuth方法的语法包含下列部分:部分描述Object必需的。代表一个对象表达式,其值是记录级权限服务对象cBusObId 业务对象ID,值同于方法GetAuthString中的参数cBusObId返回值:True 受权限控制 False不受权限控制字段级服务 U8ColAuthsrv.dll在VB中引用U8ColAuthsrv.组件在V

32、B中点击主菜单中的“工程-引用”,随后出现的“引用”对话框中选中“U8ColAuthsrv.”,然后点击“确定”,如下图所示:方法GetAuthString方法返回对某个字段拥有的权限的字符串, 一般来说,返回逗号分割的字符串注意:用户继承用户组的权限语法object. GetAuthString (cBusObId As String) as stringGetAuthString方法的语法包含下列部分:部分描述Object必需的。代表一个对象表达式,其值是字段级权限服务对象cBusObId业务对象ID,采用xml传入值。参数格式:cBusObId表示业务对象cFuncID 表示要返回的权限

33、方式用户可以指定的权限值:R(ead)查询W(rite)录入N(o)无权限备注:cFuncId=R ,只返回仅有读权限的字段,cFuncId=R% ,返回有读权限的字段,也包含读、写权限的字段 返回值:返回指定业务对象中拥有指定权限(已分配权限)的字段集合。备注:调用方的思路必须有所转变,如果询问拥有写权限的字段集合,应该考虑除了已经明确分配的写权限,还包括未被分配的权限,因为未被分配的权限默认拥有读和写;对字段权限的控制应该考虑无权限和读权限的访问,拥有所有权限的服务效率会有问题。举例Private Sub mnu_colauth_Click() Dim oCol As New clsCol

34、Auth Dim ret As String Dim constring As String constring = Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;password=;Initial Catalog=UFDATA_001_2007;Data Source=echocloud oCol.Init constring, demo ret = oCol.GetAuthString() MsgBox retEnd Sub组件:UFSoft.U8.Framework.SecurityCommon(Net版本)在VS20

35、05中使用权限组件3、 新建立一个VS2005类库项目4、 在项目中添加下面DLL的引用%U8Soft% AppServerBinFrameworkUFSoft.U8.Framework.SecurityCommon.dlldll文件的方法函数图例如下GetAuthString方法返回对某个业务对象拥有的权限的SQL条件串,没有权限返回1=2;有全部权限返回空字符串;对除了User业务对象,均返回Select子查询,user对象返回逗号分割的字符串。如部门: in (select cACCode from aa_holdauth where cUserId=demo and cBusObId=department)注意:用户继承用户组的权限语法object. GetAuthString (cBusObId As String,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论