U8登录与权限二次开发(u8用户权限)

1、 加密控制

功能介绍:

加密控制在登录组件中实现,通过一次完整的登录过程,判断用户许可数。如果没有购买加密狗,产品允许使用演示版三个月,如果购买了加密狗,超过许可数的用户,仍然只能使用演示版;所有产品,超过演示期,一律禁止使用。

目前支持两种许可方式:单个模块的许可和包的许可;

1.按单个模块的许可

每个模块独立计算许可,一个客户端使用多个不同的模块,则统计占用了多个许可.

2.按包的许可

以包统计许可,没有模块的概念,整个包近似与一个大的模块,计算许可的时候,按照客户端来统计,一个客户端可以使用多个模块(如果这些模块在同一个包中),只算一个许可 .

使用环境:

支持通狗和产品狗;

支持环境为U870版本;

开发环境要求必须在 Microsoft.NET 的 Framework 2.0.50727 版本下进行

使用说明:

组件:UFSoft.U8.Framework.Login.UI

VB中引用登录组件

1.在VB中点击主菜单中的"工程->引用",随后出现的"引用"对话框中选中"UFSoft_U8_Framework_Login_UI",然后点击"确定",如下图所示

U8登录与权限二次开发(u8用户权限)

dll文件的方法函数图例如下

U8登录与权限二次开发(u8用户权限)

登录组件提供的主要方法:

1.login方法

对外提供的登录接口,支持不要登录界面的登录认证(如果参数都输全了)

语法

Bool login(string pSubId,string UserId, string Pwd, string appServer,string operDate,string dataSource,string WorkStationSerial)

login方法的语法包含下列部分:

返回值:true 成功

False失败

举例

2.SubLogin方法

主要完成门户的登录后对子系统登录的校验工作,主要包括加密许可的控制,如果超过许可数,并且已经过三个月的演示期,则返回nothing.

语法

ProductContext SubLogin(string SubId)

SubLogin方法的语法包含下列部分:

返回值: 产品在登录后在当前进程空间所保留的上下文

举例

3.SubLogout方法

子系统注销,释放登录时占用的许可,与SubLogin成对出现

语法

void SubLogout(string SubId)

SubLogout方法的语法包含下列部分:

举例

4.ShutDown方法

在进行完成相应的登陆流程后,必须通过通过该方法来关闭该控件,否则会浪费系统资源,与login成对出现

语法

void ShutDown()

举例

5.IsDemoToSubSystem方法

得到子系统是否是演示版,如果是演示版,建议在界面上警告用户

语法

bool IsDemoToSubSystem(string UserToken,string SubID)

IsDemoToSubSystem方法的语法包含下列部分:

返回值:true演示版

Fasle正式版

登录组件提供的公共属性

1.ErrDescript

返回错误信息,所有登录组件提供的方法,如果返回值是布尔型且为false,则通过这个属性可以查看详细信息

语法

string ErrDescript{get;}

应用案例:

新增模块的步骤:

1. 注册到数据库中

可以调用存储过程sp_LoadUASubsys_Base

举例:

新增模块:'DM,中文名称:宿舍管理,

EXECUTE sp_LoadUASubsys_Base 'DM',N'宿舍管理','zh-CN',64

2. 刷加密狗,统一由总部将新增产品写到加密狗中,并需通知平台的人处理

3. 直接调用登录组件就可以满足加密控制

应用技巧:

开发技巧介绍;

应用习题:

1. 新增模块,进行加密控制;

2. 进行演示期的判断

2、功能权限控制

功能介绍:

功能权限控制提供了两个版本,VB版和Net版。VB版主要给客户端使用,Net版主要给服务端使用。主要根据互斥级别,进行功能的申请和释放,注意:功能权限只处理末级权限。

使用环境:

支持环境为U870版本

使用说明:

组件:U8Login(VB版本)

在VB中引用U8Login组件

在VB中点击主菜单中的"工程->引用",随后出现的"引用"对话框中选中"U8login",然后点击"确定",如下图所示

U8登录与权限二次开发(u8用户权限)

dll文件的方法函数图例如下

U8登录与权限二次开发(u8用户权限)

U8Login提供的主要方法

1.TaskExec方法

系统功能的申请和释放。根据参数的不同可以执行不同类型的功能申请

语法

object. TaskExec(ByVal pAuth_id As String, ByVal bIsLock As Integer, Optional ByVal iYear As Integer) As Boolean

TaskExec方法的语法包含下列部分:

返回值:True成功

False失败

举例

2. 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方法的语法包含下列部分:

返回值:True成功

False失败

组件:UFSoft.U8.Framework.SecurityCommon(Net版本)

在VS2005中使用权限组件

1、 新建立一个VS2005类库项目

2、 在项目中添加下面DLL的引用

%U8Soft% AppServerBinFrameworkUFSoft.U8.Framework.SecurityCommon.dll

%U8Soft% AppServerBinFramework UFSoft.U8.Framework.LoginContext.dll

dll文件的方法函数图例如下

U8登录与权限二次开发(u8用户权限)

UFSoft.U8.Framework.SecurityCommon提供的主要方法

1.TaskExec方法

系统功能的申请和释放。根据参数的不同可以执行不同类型的功能申请

语法

bool TaskExec(string pAuth_id ,short bIsLock ,short iYear )

TaskExec方法的语法包含下列部分:

返回值:True成功

False失败

举例

应用案例:

功能权限支持权限的互斥控制,通过预制数据到ua_control中实现。

目前支持的互斥级别

1) IAuthType = 0(功能级互斥)

表示cAuth_Id功能与cRepellent功能互斥,即两个功能不能同时执行。

例:AA0001与AA0002的互斥记录,{ AA0001、0、AA0002、Null、Null }

注意:对同一功能编号可有多条功能级互斥记录。

2) iAuthType = 1(年度级互斥)

表示账套内某年度级别的互斥。

例:有记录{AA0003、1、Null、Null、Null }

表示执行AA0003功能时该账套该年度内不能执行任何功能。

但若在该账套内登录其他会计年度则可执行所需功能。

注意:对同一功能编号只能有一条年度级互斥记录。

3) iAuthType = 2(账套级互斥)

表示账套级别的互斥。

例:有记录{AA0004、2、Null、Null、Null }

表示执行AA0004功能时该账套内的各年度都不能执行任何功能。

但若登录其他账套可执行所需功能。

注意:对同一功能编号只能有一条账套级互斥记录。

4) iAuthType = 3(模块内互斥)

表示账套内某年度内模块级别的互斥。

模块内互斥分为如下两种情况:

a) 有记录{GL0001、3、Null、Null、Null }

表示执行GL0001功能时该账套内、当前年度内、GL模块内不能执行任何功能而可执行该账套内当前年度的其他模块的功能。

b) 有记录{GL0002、3、Null、Null、GL0003}、{GL0002、3、Null、Null、GL0004}

表示执行GL0002功能时该账套内、当前年度内、GL模块内不能执行任何功能而可执行GL模块内的GL0003、GL0004功能,同时该账套内当前年度的其他模块的功能可执行。

注意:上述两种情况只能选择一种,

若为第一种情况,则对同一功能编号只能有一条模块内互斥记录;

若为第二种情况,则对同一功能编号可有多条模块内不互斥记录。

5) iAuthType = 4(模块组互斥)

表示账套内某年度内模块组的互斥。

例:有记录{AA0005、4、Null、GL、Null }、{AA0005、4、Null、AR、Null }

表示执行AA0005功能时,该账套内、当前年度的GL模块、AR模块的所有功能不能执行,而可执行该账套内当前年度的其他模块的功能。

当要执行某模块的某项功能XXXX时,应检查该模块有无iAuthType=4的记录,若有则再检查上述记录涉及的功能是否正在执行,若有这样的功能正在执行,则功能XXXX不能执行。

注意:对同一功能编号可有多条模块组互斥记录。

6) 对于UA_Control表中没有记录的功能,定义为共享功能,

但根据互斥的对称性,共享功能的共享也有如下限制:

a. 在一个账套内,若有账套级互斥功能正在执行,则任何共享功能不能执行;

b. 在一个账套的一个年度内,若有账套级互斥、年度级互斥功能正在执行,则任何共享功能不能执行;

c. 在一个账套、一个年度的某一模块内,若有账套级互斥、年度级互斥、模块内互斥功能正在执行,则任何共享功能不能执行;但若只有模块内互斥功能在执行,则它的不互斥功能可执行;

d. 在一个账套、一个年度内,若有账套级互斥、年度级互斥、模块内互斥、模块组互斥功能正在执行,则任何共享功能不能执行。

应用技巧:

调试功能申请,必须使用调试版的u8login

应用习题:

1.新增一个功能权限,调用功能申请(VB)

2.新增一个功能权限,调用功能申请(Net)

3、数据权限控制

功能介绍:

设置用户、角色对应档案、单据的数据权限,用于控制后续业务处理中允许录入、查看的数据范围

支持记录级权限控制和字段级权限控制。

根据数据权限默认设置来决定某一系统是否需要权限控制

记录级权限支持VB版和Net版两个版本。

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

使用环境:

支持环境为U870版本

使用说明:

记录级服务 U8RowAuthsrv.dll

在VB中引用U8RowAuthsrv组件

在VB中点击主菜单中的"工程->引用",随后出现的"引用"对话框中选中"U8RowAuthsrv",然后点击"确定",如下图所示

U8登录与权限二次开发(u8用户权限)

dll文件的方法函数图例如下

U8登录与权限二次开发(u8用户权限)

方法

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

GetAuthString方法的语法包含下列部分:

设置值

cBusObId的设置值有:

cFuncId的设置值有:

举例

IsHoldAuth方法

返回是否对某个表的某行纪录拥有权限

注意:当业务对象是user时,特殊处理操作员对自身有查询权限

语法

object. IsHoldAuth(cBusObId As String, cValue As String, cClassCode As String, cFuncId As String) as string

IsHoldAuth方法的语法包含下列部分:

返回值:True有权限

False 没有权限

举例

NeedControlAuth方法

指定业务对象是否受权限控制

'输入参数:cBusObId 业务对象

'输出参数:无

'返 回 值:true 受权限控制,false不受权限控制

'功 能:

语法

object.NeedControlAuth(ByVal cBusObId As String) As Boolean

NeedControlAuth方法的语法包含下列部分:

返回值:True 受权限控制

False不受权限控制

字段级服务 U8ColAuthsrv.dll

在VB中引用U8ColAuthsrv.组件

在VB中点击主菜单中的"工程->引用",随后出现的"引用"对话框中选中"U8ColAuthsrv.",然后点击"确定",如下图所示

U8登录与权限二次开发(u8用户权限)

方法

GetAuthString方法

返回对某个字段拥有的权限的字符串, 一般来说,返回逗号分割的字符串

注意:用户继承用户组的权限

语法

object. GetAuthString (cBusObId As String) as string

GetAuthString方法的语法包含下列部分:

返回值:

返回指定业务对象中拥有指定权限(已分配权限)的字段集合。

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

举例

组件:UFSoft.U8.Framework.SecurityCommon(Net版本)

在VS2005中使用权限组件

3、 新建立一个VS2005类库项目

4、 在项目中添加下面DLL的引用

%U8Soft% AppServerBinFrameworkUFSoft.U8.Framework.SecurityCommon.dll

dll文件的方法函数图例如下

U8登录与权限二次开发(u8用户权限)

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方法的语法包含下列部分:

举例

应用案例:

新增需要数据权限控制的业务对象,必须首先在如下数据库表中增加预制数据

1.aa_busobject表

2. AA_RowAuthDic表,记录级权限需要预制此表

应用技巧:

1. 字段权限的映射关系可以通过UAP中商业敏感工具来实现

2. 栏目的预制数据可以使用UAP的栏目设计器增加

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年7月29日 上午9:51
下一篇 2023年7月30日 上午8:01

相关推荐