验证用户身份

启用内置身验证后,服务端的登录身份验证变得非常简单。

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

当然你也可以根据用户角色来选择好友,这里就不举例了。

虽然可以根据用户分组或角色选择好友,但显然局限性比较大,不够灵活 ,这是下一节要解决的问题。

 


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