设置用户登录事件

本节的内容可以参考CaseStudy目录下的例子:QQServer.Table

有用户登录OpenQQ时,会触发OpenQQ服务端事件UserLogging, 该事件用于验证登录用户身份,并在验证通过后,给用户设置好友。

此事件的e参数有:

UserName: 字符型,返回登录用户名
Password: 字符型,返回登录用户密码
Success:  逻辑型,默认为False,设置为True允许此用户登录
Message:   字符型,通常用于设置返回给用户的欢迎信息或错误信息。
Buddies:  字符型集合,用于设置登录用户的好友名单

在菜单的“管理项目”功能区,单击“网络监视器”,设置UserLogging事件的代码如下:

Dim pts() As String = e.UserName.Split(".")
Dim
dr As DataRow
dr
= DataTables("用户").Find("部门 = '" & pts(0) & "' And 姓名 = '" & pts(1) & "'")
If
dr Is Nothing  Then '判断此用户不存在
    e.Message  =
"
用户名错误!" '返回给登录者的提示信息
    Return

End
If
If
dr("密码") <> e.Password Then '如果密码错误
   
e.Message  = "登录密码错误!" '返回给登录者的提示信息
   
Return

End
If
e
.Success = True '允许用户登录
'添加存储在好友列的非本部门的好友

If
dr.IsNull("好友") = False Then
    Dim nms() As String = dr(
"
好友").Split(",")
    e.Buddies.AddRange(nms)

End
If
'最后添加相同部门的同事为好友

For
Each dr In DataTables("用户").Select("部门 = '" & pts(0) & "'")
    Dim nm As Stringdr("部门") & "." & dr("姓名")
    If nm <> e.UserName Then '如果不是登录者本人
       
e.Buddies.Add(nm)
    End
If

Next

以上代码判断用户名和密码是否正确,如果正确,将e参数Success设置为True,允许该用户登录,然后将该用户的好友添加到Buddies集合中。
需要注意的是,好友必须是双向的,也就是两个用户必须互为好友,相互之间才能收发信息。

如果企业员工不多,可以直接将所有员工相互加为好友,实际上示例文件QQServer.Table就是这样的:

Dim pts() As String = e.UserName.Split(".")
im
dr1 As DataRow
dr1
= DataTables("用户").Find("部门 = '" & pts(0) & "' And 姓名 = '" & pts(1) & "'")
If
dr1 Is Nothing  Then '判断此用户不存在
    e.Message  = "用户名错误!" '返回给登录者的提示信息
   
Return

End
If
If
dr1("密码") <> e.Password Then '如果密码错误
    e.Message  = "登录密码错误!" '返回给登录者的提示信息
   
Return

End
If
e
.Success = True '允许用户登录
'添加所有同事为好友

For
Each dr2 As DataRow In DataTables("用户").DataRows
    Dim nm As Stringdr2("部门") & "." & dr2("姓名")
    If nm <> e.UserName Then '如果不是登录者本人
        e.Buddies.Add(nm)
    End
If

Next


本页地址:http://www.foxtable.com/webhelp/topics/2969.htm