| 要在浏览器中直接修改用户口令,首先要在数据库中建立一个表单,如图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 "<strong>新口令输入有误,请重新输入! </stron>" |
| Exit Sub |
| End If |
| new_pass = doc.new_pass(0) |
| Formula = "Form = 'Person' & ShortName='" + doc.ShortName(0) + "' & HttpPassword= '"+doc.HttpPassword(0)+"' " |
| ‘注释——产生文档搜索标准 |
| Set docs = NamesDb.Search(Formula,dt,0) |
| ‘注释——得到文档搜索结果 |
| If docs.count <> 1 Then |
| Print "<strong>用户名或口令出错,请检查! </stron>" |
| Else |
| Set Namesdoc = docs.Getfirstdocument |
| ‘注释——获得记录用户信息的文档 |
| Namesdoc.HttpPassword = New_Pass |
| Call namesdoc.save(True,False) |
| ‘注释——修改用户的口令,并保存文档 |
| Print "<strong>口令修改成功! </stron>" |
| End If |
| Exit Sub |
| ErrProc : |
| Print "系统错误" |
| End Sub |
本文介绍了一种在浏览器中直接修改用户口令的方法,通过创建表单并利用代理ChangePass来实现口令更新功能。

329

被折叠的 条评论
为什么被折叠?



