分享
 
 
 

在浏览器中直接修改Lotus Notes用户口令

王朝other·作者佚名  2008-05-30
窄屏简体版  字體: |||超大  

一.问题提出。

Lotus Notes是Lotus公司最近推出的Domino/Notes软件的总称。它是一种“群组工作软件”(简称群件),功能强大、界面丰富,主要用于辅助一群人协同工作。它包含了一整套的基于通信基础设施的文档数据库,同时具有分布式存储和通信的特点。使用Notes,人们可以突破平台、技术、机构和地理的限制,可以将强大的Internet与身旁的多功能的Notes数据库结合起来。

Lotus Notes的客户机端系统软件叫做Notes,服务器端系统软件称为Domino(由于最初的版本统一称为Notes,故现在习惯上也用Notes表示整个Lotus Notes)。Notes由三个主要的程序组成:Domino服务器、Internet标准服务器和Notes客户机。其中Domino服务器是运行在Windows或UNIX上,并向Notes客户机和其他Domino服务器提供包括存储共享的数据库和Notes路由服务的计算机。用户可以通过Notes客户机或其他浏览器在Domino服务器与Internet服务器之间进行通信。

Lotus Notes的这些优点使它成为办公自动化软件的首选开发环境。而当前随着Internet、Intranet的发展,在一些大型企业中开发的办公自动化系统,由于企业规模大,地域分布较为分散,以及用户的计算机技能参差不齐,所以用户全部通过Notes客户端软件来使用办公自动化系统协同工作是不现实的,而用户使用浏览器来与服务器端进行信息交互是一种比较好的工作方式,这将大大减少系统维护人员的工作量。而使用浏览器作为客户端工具时,就必须提供在浏览器中直接修改用户口令的功能。

二.解决方案。

要在浏览器中直接修改用户口令,首先要在数据库中建立一个表单,如图1所示,表单中包含ShortName,HttpPassWord,Newpass1,Newpass2等4个可编辑文本域,分别用来让用户输入用户名,用户口令,第一次输入新口令,第二次输入新口令。另外,在表单中创建一个“确定”按钮,单击“确定”按钮以后所发生的事件就是保存表单——“@COMMAND([FILESAVE])”。再在WEBQUERYSAVE事件中调用一个代理ChangePass——“@COMMAND([TOOLSRUNMACRO],”ChangePass”)”,这样,每当用户单击“确定”按钮时,系统就会自动调用代理ChangePass,因此修改用户口令的关键代码就全部写在代理ChangePass中。

三.代理ChangePass说明。

1. 在代理ChangePass中所使用的Notes类及方法有:

GetDatabase 成员函数

在Notessession类中给出的成员函数。创建代表位于服务器上,文件名已指定的数据库的 NotesDatabase 对象。如果在指定服务器的指定位置上存在该数据库,则打开该数据库。

DocumentContext 属性

在NotesSession类中给出的属性。只读,由外部程序通过 Notes API 创建的驻留内存的文档。外部程序首先创建一个驻留内存文档,然后运行一个代理。这个代理可以使用本属性访问驻留内存文档。

Search 成员函数

在NotesDatabase类中给出的成员函数。根据给出的文档选择标准,在整个数据库的所有文档中进行搜索,返回数据库中所有符合该标准的文档。

在Notes中,所有用户的信息均被保存在Domino的默认数据库目录Data下的数据库Names.nsf中。并且,每一个用户在Names.nsf中均有一个对应的文档,文档中有几十个数据项,分别用来保存用户的名字、EMAIL地址、家庭住址、组织关系和口令等等信息,全部是在用户注册时产生的。其中用户在WEB浏览器中的用户名保存在数据项ShortName中,口令保存在数据项HttpPassword中。所以在代理ChangePass中的主要功能就是在数据库Names.nsf中根据给定的用户名以及口令,找到记录用户信息的对应文档,将文档中的数据项HttpPassword保存的原有口令改为新口令的值,就一切OK了。

2.代理ChangePass的源代码。

Sub Initialize

Dim dt As New Notesdatetime("")

‘注释——获取当前的系统时间

Dim Session As New NotesSession

‘注释——获取当前的Session

Dim NamesDb As Notesdatabase

Dim docs As NotesDocumentCollection

Dim doc As Notesdocument,Namesdoc As Notesdocument

Dim formula As String

Dim new_pass As String

On Error Goto ErrPRoc

‘注释——出错则跳转到ErrProc

Set NamesDb = Session.GetDatabase("","names.nsf")

‘注释——打开数据库names.nsf

Set doc = Session.DocumentContext

‘注释——获取当前文档

If doc.new_pass(0) doc.new_pass1(0) Then

Print "新口令输入有误,请重新输入!"

Exit Sub

End If

new_pass = doc.new_pass(0)

Formula = "Form = 'Person' %26amp; ShortName='" + doc.ShortName(0) + "' %26amp; HttpPassword= '"+doc.HttpPassword(0)+"' "

‘注释——产生文档搜索标准

Set docs = NamesDb.Search(Formula,dt,0)

‘注释——得到文档搜索结果

If docs.count 1 Then

Print "用户名或口令出错,请检查!"

Else

Set Namesdoc = docs.Getfirstdocument

‘注释——获得记录用户信息的文档

Namesdoc.HttpPassword = New_Pass

Call namesdoc.save(True,False)

‘注释——修改用户的口令,并保存文档

Print "口令修改成功!"

End If

Exit Sub

ErrProc :

Print "系统错误"

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有