U8开发之登录组件.docx
《U8开发之登录组件.docx》由会员分享,可在线阅读,更多相关《U8开发之登录组件.docx(30页珍藏版)》请在冰豆网上搜索。
U8开发之登录组件
U8登录组件
摘要
登录组件是U8应用程序的入口,负责登录操作并获得相关登录信息、令牌等。
什么是登录组件?
登录U8应用程序的组件。
目标
本文主要介绍登录组件的基础知识,应用过程及相关注意事项,方便各类U8产品开发人员更好的使用登录组件,更高效的开发产品。
登录组件可以做什么?
主要功能:
∙与加密服务器通讯,负责管理连接站点数是否超过加密狗中的站点数。
∙加密控制在登录组件中实现,通过一次完整的登录过程,判断用户许可数。
如果没有购买加密狗,产品允许使用两个月或者60天,如果购买了加密狗,超过许可数的用户,仍然只能使用演示版;所有产品,超过演示期,一律禁止使用。
∙目前支持两种许可方式:
单个模块的许可和包的许可
1.按单个模块的许可
每个模块独立计算许可,一个客户端使用多个不同的模块,则统计占用了多个许可.
2.按包的许可
以包统计许可,没有模块的概念,整个包近似与一个大的模块,计算许可的时候,按照客户端来统计,一个客户端可以使用多个模块(如果这些模块在同一个包中),只算一个许可.
∙建立与应用服务器的连接
∙登录成功后返回登录令牌,用此令牌可以获得登录信息(账套、年度、用户等)。
使用环境:
支持产品狗和软加密证书
支持环境为U811.0版本;
开发环境要求必须在Microsoft.NET的Framework3.5版本下进行
如何使用登录组件?
组件:
UFSoft.U8.Framework.Login.UI
在VB中引用登录组件
1.在VB中点击主菜单中的“工程->引用”,随后出现的“引用”对话框中选中“UFSoft_U8_Framework_Login_UI”,然后点击“确定”,如下图所示:
dll文件的方法函数图例如下
登录组件提供的主要方法:
●公共方法
login方法
对外提供的登录接口,支持不要登录界面的登录认证(如果参数都输全了)
SubLogin方法
主要完成门户的登录后对子系统登录的校验工作
SubLogout方法
子系统注销
GetLoginInfo方法
客户端返回登录需要的连接串信息等
GetTaskID方法
返回指定子系统的TaskID
GetDataSource方法
得到服务端配置的数据源
ShutDown方法
注销登录过程
GetDefaultConnstring方法
得到服务端配置的数据源
IsDemoToSubSystem方法
得到子系统是否是演示版
getAppConnstring方法
得到具体应用的连接信息
GetPwdSecurityLevel
得到给定密码的安全级别
GetLastErrorResID
返回最后一个出错的错误ID和带参的资源变量
EnPassWord
提供密码单项加密函数
GetFileServerInfo
登录成功,返回服务器端配置的文件服务器信息
GetSubLoginInfo
返回子产品的登陆信息集合
ModifyUserPassword
当登录成功后,修改用户密码
●公共属性
ErrDescript
返回错误信息
IsCompanyVer
返回标志,判断是否集团账套
WorkStationName
设置IE的站点名或IP地址(目的记录使用Web应用程序登录的当前工作站)
userToken
返回登录令牌
dataSource
返回当前登录使用的数据源
Auditor
设置审核人的信息
●方法详细解释:
1.login方法
对外提供的登录接口,支持不要登录界面的登录认证(如果参数都输全了)
语法
Boollogin(stringpSubId,stringUserId,stringPwd,stringappServer,stringoperDate,stringdataSource,stringWorkStationSerial,boolChangePwd,stringNewPassword,boolKickOutWorkStation)
login方法的语法包含下列部分:
部分
描述
SubId
必需的。
子产品号
pSubId
必需的。
子产品号
dataSource
可选项,数据源
UserId
可选项,用户编号
Pwd
可选项,用户密码
appServer
可选项,应用
服务器名
operDate
可选项,注册日期
WorkStationSerial
可选项,硬件序列号(必须全球唯一)
ChangePwd
必需的.本次登陆是否修改密码
NewPassword
可选项。
如果ChangePwd=true,记录新密码
KickOutWorkStation
必需的。
本次登陆是否踢除其他客户端,=true,同名用户不允许在多个客户端登陆
返回值:
true成功
False失败
返 回
举例
PrivateSubmnu_login_Click(IndexAsInteger)
DimpSubIdAsString
DimpUserIdAsString
DimpPasswordAsString
DimcSrvAsString
DimpDateAsString
DimpAccIdAsString
DimcSerialAsString
pSubId="GL"
pUserId="demo"
pPassword=""
cSrv="echocloud"
pDate="2006-11-01"
pAccId="(default)@001"
cSerial=""
Ifologin.login(pSubId,pUserId,pPassword,cSrv,pDate,pAccId,cSerial,false,"",false)=FalseThen
MsgBoxm_NewLogin.ErrDescript
Else
MsgBox"loginok"
EndIf
EndSub
2.SubLogin方法
主要完成门户的登录后对子系统登录的校验工作,主要包括加密许可的控制,如果超过许可数,并且已经过三个月的演示期,则返回nothing.
语法
ProductContextSubLogin(stringSubId)
SubLogin方法的语法包含下列部分:
部分
描述
SubId
必需的。
子产品号
返回值:
产品在登录后在当前进程空间所保留的上下文
举例
PrivateSubmnu_sublogin_Click(IndexAsInteger)
'第二步:
子系统登录
SetoLoginContext=ologin.SubLogin("GL")
IfoLoginContextIsNothingThen
MsgBoxologin.ErrDescript
Else
MsgBox"subloginok."
EndIf
EndSub
返 回
3.SubLogout方法
子系统注销,释放登录时占用的许可,与SubLogin成对出现
语法
voidSubLogout(stringSubId)
SubLogout方法的语法包含下列部分:
部分
描述
SubId
必需的。
子产品号
举例
ologin.SubLogout("GL")
返 回
4.GetLoginInfo方法
客户端返回登录需要的连接串信息等
语法
UserDataGetLoginInfo()
UserData的语法包含下列部分:
部分
描述
UserData
publicclassUserData
{
publicstringUserId;//用户名
publicstringPassword;//密码
publicstringAccID;//帐套ID
publicstringiYear;//帐套年度
publicstringcSubID;//子系统号
publicstringAppServer;//应用服务器
publicstringuuid;//
publicstringDataSource;//数据源
publicstringConnString;//年度库的连接串
publicstringoperDate;//登陆界面的业务日期
publicstringWorkStationSerial;//工作站的唯一序列号
publicstringRightServer;//读取加密狗服务器
publicstringLanguageID;//语言
publicboolIsCompanyVer;//是否集团帐套=true,集团版
publicHashtableSecondConnString;
publicstringEmployeeId;//操作员对应的人员编码
publicboolIsAdmin;//当前操作员是否是账套主管
publicstringUserName;//操作员名称
publicstringAccName;//账套名称
publicintiMonth;//会计月
publicstringAppServerSerial;//应用服务器唯一序列号
publicstringRoles;//操作员隶属的角色组
public_AuditorContextAuditor;//审核人
publicstringBarCode;//加密狗的条码信息
publicstringCustomer;//加密狗中记录的用户信息,可以为空
publicintAuthenMode;//当前用户的身份认证方式,
//(STATICPASSWORD=0,DYNAMICPASSWORD=1,CACERT=2)
publicstringAuthenExtraInfo;//记录CA认证需要的额外信息
publicstringIndustryType;//行业类型
}
_AuditorContext
publicinterface_AuditorContext
{
stringAuditorId{get;set;}//编码
stringAuditorName{get;set;}//名称
}
返回值:
登录信息
5.GetTaskID方法
返回指定子系统的TaskID
语法
stringGetTaskID(stringSubID)
TaskExec方法的语法包含下列部分:
部分
描述
SubID
必需的。
子产品号
返回值:
子系统的TaskID
返 回
6.GetDataSource方法
得到服务端配置的数据源
语法
stringGetDataSource(stringAppServerName,stringUserId)
GetAccInfo方法的语法包含下列部分:
部分
描述
AppServerName
应用服务器的名称
UserId
Xml格式信息
返回值:
xml格式的数据源编码
返 回
7.ShutDown方法
在进行完成相应的登陆流程后,必须通过通过该方法来关闭该控件,否则会浪费系统资源,与login成对出现
语法
voidShutDown()
举例
cologin.ShutDown
返 回
8.GetDefaultConnstring方法
得到服务端配置的默认数据源
语法
stringGetDefaultConnstring(stringAppServerName);
部分
描述
AppServerName
应用服务器的名称
返回值:
默认数据源对应的连接串
返 回
9.IsDemoToSubSystem方法
得到子系统是否是演示版,如果是演示版,建议在界面上警告用户。
语法
boolIsDemoToSubSystem(stringUserToken,stringSubID)
IsDemoToSubSystem方法的语法包含下列部分:
部分
描述
UserToken
必需的。
登录令牌
SubID
必需的。
子产品号
返回值:
true演示版
Fasle正式版
返 回
10.getAppConnstring方法
得到具体应用的连接信息
语法
stringgetAppConnstring(stringUserToken,stringSubID);
ClosingStatus方法的语法包含下列部分:
部分
描述
UserToken
必需的。
登录令牌
SubID
必需的。
子产品号
返回值:
连接串
返 回
11.GetPwdSecurityLevel方法
得到给定密码的安全级别
语法
intGetPwdSecurityLevel(stringPwdValue);
GetPwdSecurityLevel方法的语法包含下列部分:
部分
描述
PwdValue
必需的。
指定密码
返回值:
安全级别
=0低;1中;2高;3优秀
返 回
12.GetLastErrorResID方法
返回最后一个出错的错误ID和带参的资源变量,如果没有错误,返回nothing,如果是系统错误,ResId为空串
语法
ResServiceHeadGetLastErrorResID();
GetLastErrorResID方法的语法包含下列部分:
部分
描述
返回值:
资源错误对象,包括:
ResId资源ID;
ResArg资源参数列表
常见的错误ID列表
部分
描述
U8.AA.LoginBO.DemoInvalidate
账套[{0}]年度[{1}]的演示期限已到期!
U8.AA.LoginBO.ErrorPassword
口令不正确!
返 回
13.EnPassWord方法
提供密码单项加密函数
语法
stringEnPassWord(stringPwdValue);
EnPassWord方法的语法包含下列部分:
部分
描述
PwdValue
必需的。
明文
返回值:
hash值
返 回
14.GetFileServerInfo方法
登录成功,返回服务器端配置的文件服务器信息
语法
stringGetFileServerInfo(stringUserToken,boolisWeb);
GetFileServerInfo方法的语法包含下列部分:
部分
描述
UserToken
必需的。
登录的合法令牌
PwdValue
必需的。
是否与登录对象在同一进程里,如果在,则为false,否则为true
返回值:
文件服务器详细信息,格式如下
返 回
14.GetSubLoginInfo方法
子产品登录成功后,返回子产品的登陆信息集合
语法
SubSystemDataHeadGetSubLoginInfo(stringSubId);
GetSubLoginInfo方法的语法包含下列部分:
部分
描述
SubId
必需的。
子产品号,如GL。
返回值:
子产品登录信息
返 回
15.ModifyUserPassword方法
修改用户密码,当登录成功后
语法
voidModifyUserPassword(stringNewPassword);
ModifyUserPassword方法的语法包含下列部分:
部分
描述
NewPassword
必需的。
新密码。
返回值:
无
返 回
属性详细解释
1.ErrDescript
返回错误信息,所有登录组件提供的方法,如果返回值是布尔型且为false,则通过这个属性可以查看详细信息
语法
stringErrDescript{get;}
返 回
2.IsCompanyVer
返回标志,判断是否集团账套
语法
boolIsCompanyVer{get;}
返 回
3.WorkStationName
设置IE的站点名或IP地址(目的记录使用Web应用程序登录的当前工作站)
语法
stringWorkStationName{set;}
返 回
4.userToken
返回登录令牌
语法
stringuserToken{get;}
返 回
5.dataSource
返回当前登录使用的数据源
语法
stringdataSource{get;}
返 回
6.Auditor
设置审核人信息
语法
_AuditorContextAuditor{set;}
_AuditorContext的语法包含下列部分:
_AuditorContext的语法包含下列部分
部分
描述
_AuditorContext
publicinterface_AuditorContext
{
stringAuditorId{get;set;}//编码
stringAuditorName{get;set;}//名称
}
返 回
应用案例:
新增模块的步骤:
1.注册到数据库中
可以调用存储过程sp_LoadUASubsys_Base
举例:
新增模块:
'DM,中文名称:
宿舍管理,
EXECUTEsp_LoadUASubsys_Base'DM',N'宿舍管理','zh-CN',64
2.刷加密狗,统一由总部将新增产品写到加密狗中,并需通知平台的人处理
3.直接调用登录组件就可以满足加密控制
返 回
功能权限控制
功能权限控制提供了两个版本,VB版和Net版。
VB版主要给客户端使用,Net版主要给服务端使用。
主要根据互斥级别,进行功能的申请和释放,注意:
功能权限只处理末级权限。
组件:
U8Login(VB版本)
在VB中引用U8Login组件
在VB中点击主菜单中的“工程->引用”,随后出现的“引用”对话框中选中“U8login”,然后点击“确定”,如下图所示:
dll文件的方法函数图例如下
U8Login提供的主要方法:
1.TaskExec方法
系统功能的申请和释放。
根据参数的不同可以执行不同类型的功能申请
语法
object.TaskExec(ByValpAuth_idAsString,ByValbIsLockAsInteger,OptionalByValiYearAsInteger)AsBoolean
TaskExec方法的语法包含下列部分:
部分
描述
Object
必需的。
代表一个对象表达式,其值是U8login对象
pAuth_id
必需的。
bIsLock=10子产品号
其余功能号
bIsLock
必需的。
申请锁的类型
=10判断当前子系统是否已买授权
=2仅判断当前操作员是否对功能pAuth_id在登录的账套、年度里具有操作权限,不判断功能号是否存在,推荐使用=1
=1判断当前操作员在登录账套是否有功能权限,可以切换年度,不输,默认登录年度
=-1判断当前操作员是否有功能权限且申请的功能权限是否与其他正在运行的功能互斥
=0释放权限
=3同=-1,特殊处理authtype=3的功能,bIsLock=3要求与非本机本模
块的reg互斥
=11判断当前子系统是否已买授权,授权与年度有关,当前年度<=加密狗年度,授权允许,否则不允许
=12判断当前子系统是否已买授权,若没有买授权,是否超过演示版,超过演示版=false
iYear
可选项,年度
返回值:
True成功
False失败
举例
'执行功能申请
PrivateSubmnu_taskApply_Click()
Callvblogin.ConstructLogin(ologin.userToken)
vblogin.TaskId=ologin.GetTaskID("GL")
Ifvblogin.login("GL")=FalseThen
MsgBox"createu8loginfailed"+vblogin.ShareString
ExitSub
EndIf
Ifvblogin.TaskExec("WA01012",-1)=FalseThen
Ifvblogin.LogState<>0Then
MsgBoxvblogin.ShareString
Else
MsgBox"出现无法预知的错误,无法申请功能!
"
EndIf
ExitSub
Else
MsgBox"OK_WA01012"
EndIf
EndSub
2.TaskExecEx方法
执行功能申请,判断业务的互斥操作,提供按照分类进行授权
TaskExecEx方法的语法包含下列部分:
部分
描述
Object
必需的。
代表一个对象表达式,其值是U8login对象
pAuth_id
必需的。
bIsLock=10子产品号
其余功能号
bIsLock
必需的。
申请锁的类型
=10判断当前子系统是否已买授权
=2仅判断当前操作员是否对功能pAuth_id在登录的账套、年度里具有操作权限,不判断功能号是否存在,推荐使用=1
=1判断当前操作员在登录账套是否有功能权限,可以切换年度,不输,默
认登录年度
=-1判断当前操作员是否有功能权限且申请的功能权限是否与其他正在运行的功能互斥
=0释放权限
=3同=-1,特殊处理authtype=3的功能,bIsLock=3要求与非本机本模块的reg互斥
=11判断当前子系统是否已买授权,授权与年度有关,当前年度<=加密狗年度,授权允许,否则不允许
=12判断当前子系统是否已买授权,若没有买授权,是否超过演示版,超过演示版=false
iYear
可选项,年度
pAuthClassCode
业务分类,如:
工资类别,
如果输入这个参数,