[IBM
Rational ClearQuest]
[ClearQuest.AdminSession]
[ClearQuest.Session]
当我们利用ClearQuest开发完一个平台之后,在试运行与正式运行期间,会有部分用户已经使用了系统中的功能,在正式运行之前我们必须确保使用系统用户数据的安全问题。这时我们可以选择强制性将所有用户的密码重置为特定的初始密码,或者只对将未修改密码用户初始化密码。
现在我们就面临两个问题:
1、如果只对未修改密码用户初始化密码,如何判断用户是否已经修改了自己的密码。
2、用户数比较多的情况下,必须通过程序自动去初始化用户的密码,如何去做。
第一个问题,摸索了很久,也无法判断,因为在CQ系统中,用户的密码是以加密的方式存储在数据库中,不同的login_name,均未设置密码,其加密之后的密文也是不同的,那就只能对该密文进行解密,这部分的资料在IBM网站上基本上没有任何有用的帮助信息,那就只有用不是办法的办法,对于每个用户我们可以用初始密码(也就是密码为空)进行试登录,如果成功,则说明用户未修改密码;否则将跳过这个用户不进行处理。
第二个问题,只能通过写一个外部的应用程序来进行试登录,修改的操作。
下面是以在Excel中通过vbscript为例的脚本示例片断:
Set admin_so = CreateObject("ClearQuest.AdminSession")
Set test_so = CreateObject("ClearQuest.Session")
admin_so.Logon uc, pc, mc
Dim ci, pv
ci = 1 pv = new_init_pwd
For i = 1 To rowCounts
'login name
Set c1 = wsDataUser.Cells(i, 1)
'full name
Set c2 = wsDataUser.Cells(i, 2)
'phone
Set c3 = wsDataUser.Cells(i, 3)
DoEvents
test_so.UserLogon c1.Value, old_init_pwd, udbc, 2, mc
DoEvents
If Err.Number
> 0 Then
'登录失败,确认用户密码已经被修改
'跳过该用户,不修改该用户密码
Else
'用户密码未修改,强制修改该用户密码
If isExistUser(admin_so, c1.Value) Then
Set curUser = admin_so.getUser(c1.Value)
curUser.SetLoginName c1.Value, pv
curUser.UpgradeInfo
wsSql.Cells(ci, 1) = "Insert Into filemanager.hhty_sms
(Id,receive_man,receive_mobile,sms_contents) Values ((Select
NVL((Max(Id)+1),1) From filemanager.hhty_sms),'"
& c2.Value & "','" & c3.Value &
"','您好,您的开发管理平台帐号已经开通,初始帐号密码为:" & c1.Value
& "/" & pv & ",请您及时更改自己的密码!'"
ci = ci + 1
End If
End If
Err.Clear
DoEvents Next
MsgBox ("初始化用户密码结束!")
Set test_so = Nothing
Set admin_so = Nothing
详细的示例可查看附件中的详细实现。附件中的Excel的功能是自动登录CQ,逐个检查试登录,修改用户的密码,并生成特定的SQL语句,执行该SQL语句将在短信系统中自动插入要发送的内容。
另外这始终不是最好的方法,依照笔者的理解,对于CQ中的密码管理最好采用LADP或者WindowsNT域的方式,用户的组管理必须放在CQ的系统中处理,总的感觉不是很方便。
|
文件: |
S_Modify_ClearQuest_Users_PWD.rar |
大小: |
10KB |
下载: |
下载 |
|
|