验证用户身份
启用内置身验证后,服务端的登录身份验证变得非常简单。
OpenQQ服务端用于登录身份验证的事件是UserLogging,该事件有个e参数User,类型为UserInfo,如果内置身份验证通过,该参数返回登录用户,否则返回Nothing。
所以判断是否通过身份验证的代码很简单:
If
e.User
IsNot Nothing
Then
'通过了内置身份验证
e.Success
= True
'允许用户登录
Else
'未通过内置身份验证
End If
例如通过验证后添加所有用户为好友:
If
e.User
IsNot Nothing
Then
e.Success =
True '允许登录
For Each
u As
UserInfo In
Users
If
u.Name <>
e.User.Name
Then
If
u.Group > ""
Then
e.Buddies.Add(u.Group
& "."
& u.Name)
Else
e.Buddies.Add(u.Name)
End
If
End If
Next
End
If
有条件添加好友
在添加好友的时候,我们可以进行一些判断,例如经理分组的用户,只添加经理和主管两个分组的用户为好友;主管分组的用户,添加所有用户为好友;员工分组的用户添加主管和员工两个分组的用户为好友:
If
e.User
IsNot Nothing
Then '如果通过了内置身份验证,
e.User表示登录的用户
e.Success =
True '允许登录
Select Case
e.User.Group
Case
"经理"
For
Each u As
UserInfo In
Users
If
u.Name <>
e.User.Name
Then
If
u.Group =
"经理" OrElse
u.Group =
"主管" Then
e.Buddies.Add(u.Group
& "."
& u.Name)
End
If
End
If
Next
Case
"主管"
For
Each u As
UserInfo In
Users
If
u.Name <>
e.User.Name
Then
If
u.Group >
"" Then
e.Buddies.Add(u.Group
& "."
& u.Name)
Else
e.Buddies.Add(u.Name)
End
If
End
If
Next
Case
"员工"
For
Each u As
UserInfo In
Users
If
u.Name <>
e.User.Name
Then
If
u.Group =
"主管" OrElse
u.Group =
"员工" Then
e.Buddies.Add(u.Group
& "."
& u.Name)
End
If
End
If
Next
End Select
End
If
当然你也可以根据用户角色来选择好友,这里就不举例了。
虽然可以根据用户分组或角色选择好友,但显然局限性比较大,不够灵活 ,这是下一节要解决的问题。