设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 40238|回复: 12
打印 上一主题 下一主题

有关AnyChat平台用户身份验证与第三方平台集成的问题

[复制链接]

249

主题

2967

帖子

9080

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9080
跳转到指定楼层
#
发表于 2013-6-21 10:15:01 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
AnyChat采用独立业务逻辑服务器来处理有关业务相关的事务,其中用户身份验证就属于其中一个业务逻辑的处理。首先看一下AnyChat平台业务逻辑处理的总体框架,如下图所示:

其中,BusinessServer.exe是一个独立的应用程序,调用AnyChat Server SDK所提供的API接口,AnyChat Server SDK内部会采用IPC的方式与核心服务器建立联系,即:在处理业务逻辑时,不需要与核心服务器(AnyChatCoreServer.exe)建立直接的联系,核心服务器也不提供任何API接口供调用。
用户在AnyChat平台登录时,分两种情况:游客方式(只有用户名,密码为空)和正常方式(用户名、密码均不为空),下面分别对这两种方式的业务流程进行详细描述:

a)游客方式:在调用客户端API接口【BRAC_Login】时只传入用户名,密码为空,则核心服务器(AnyChatCoreServer.exe)将分配一个userid,为负数,从-2开始依次加1,同时触发业务服务器的回调事件【OnUserLoginAction】,如下图所示:

可以在核心服务器的配置文件(AnyChatCoreServer.ini)中进行配置,开启(默认)或关闭游客登录模式。


b)正常方式:在调用客户端API接口【BRAC_Login】时传入用户名和密码,均不为空,则核心服务器(AnyChatCoreServer.exe)将不处理userid的分配逻辑,将会触发业务服务器的回调事件【OnVerifyUser】,由业务服务器在该回调事件中进行用户身份验证,分配userid,然后将用户身份验证结果(是否登录成功)返回给客户端,若用户身份验证成功,则还将触发业务服务器的回调事件【OnUserLoginAction】,如下图所示:


在业务服务器【OnVerifyUser】回调函数中,所分配的userid,返回的errorcode,将体现在客户端的事件【OnLoginSystem(userid, errorcode)】参数中,所以业务服务器可以自定义errorcode来表示用户身份验证失败的原因。


关于数据库连接:核心服务器(AnyChatCoreServer.exe)是不需要连接数据库的,连接数据库在业务层处理,即由业务服务器自己连接数据库,在【OnVerifyUser】回调函数中查询数据库的信息,对用户身份进行验证,所以不论上层应用是连接的MSSQL、MySQL、DB2、Oracle或是NoSQL,对AnyChat平台来说,都是透明的。

常见问题分析:
1、用户登录时不能触发业务服务器的【OnVerifyUser】回调函数?
答:是否在登录时输入的密码为空?

2、用户登录时不能触发业务服务器的【OnUserLoginAction】回调函数?
答:是否正确部署了业务服务器,业务服务器是否与核心服务器建立了正常的通信联系?参考:AnyChat使用攻略之独立部署Windows视频服务器

3、用户登录时输入了用户名、密码,为什么返回的userid还是负数,还是游客模式登录?
答:这是核心服务器内置的业务逻辑,当业务服务器没有启动,或是业务服务器部署不正确时将默认以游客方式登录系统,参考:AnyChat核心服务器内置用户登录业务逻辑




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2
回复

使用道具 举报

0

主题

16

帖子

72

积分

注册会员

Rank: 2

积分
72
QQ
12#
发表于 2018-3-26 11:42:15 | 只看该作者
最简单的验证方法是,业务服务器收到核心转发的用户信息后,去DB用户表里面检索,匹配成功后,返回回调函数和用户ID给核心,核心传给客户端,通过验证。
回复 支持 反对

使用道具 举报

0

主题

16

帖子

72

积分

注册会员

Rank: 2

积分
72
QQ
11#
发表于 2018-3-26 11:32:03 | 只看该作者
实现思路简化版:
客户端登陆API,发送用户信息 --- 核心服务转发ID和密码 --- 业务服务器验证(验证方法自行设计),返回用户身份验证回调函数 --- 核心转发回调 --- 客户端通过验证后登陆。
用户身份验证回调函数说明:
2.3.  用户身份验证回调函数定义
typedef DWORD (CALLBACK* BRAS_VerifyUser_CallBack)(IN LPCTSTR lpUserName,INLPCTSTR lpPassword, OUT LPDWORD lpUserID, OUT LPDWORD lpUserLevel, OUT
LPTSTR lpNickName,IN DWORD dwNCLen, LPVOID lpUserValue);
参数:
LPCTSTR  lpUserName 用于身份验证的用户名
LPCTSTR  lpPassword 用于身份验证的用户密码
LPDWORD lpUserID  输出用户的 ID 号(唯一)
LPDWORD lpUserLevel 输出用户的级别
LPTSTR lpNickName 输出用户的昵称(可以与用户名相同)
DWORD dwNCLen  保存用户昵称的缓冲区大小
LPVOID  lpUserValue 用户自定义参数,在设置回调函数时传入
返回值:
DWORD  返回出错代码,参考 SDK\ GVErrorCodeDefine.h 文件中有关出错
代码的定义,通常会返回如下的值:
GV_ERR_SUCCESS(0)  表示验证通过,允许用户登录系统
GV_ERR_CERTIFY_FAIL(200) 用户名或密码有误,认证失败
GV_ERR_ACCOUNT_LOCK(202)  帐户已被暂时锁定,认证失败
备注:
该回调函数用于验证用户的身份信息。用户名与用户密码为输入参数,后面其它的参数为输出参数,用于反馈结果给服务器程序。身份验证是否成功通过该
方法的返回值来判定。dwVSLen 用于指示传入的缓冲区大小,防止函数体里面拷贝数据时内存溢出。如果该方法不输出用户的昵称,即当 lpNickName 的字符
长度为 0 时,服务器会自动将用户名默认为用户的昵称。
当客户端调用 API:“BRAC_Login”方法,且用户密码不为空时将会触发该回调函数,如果用户密码为空,则不会触发该回调,服务器会将该客户端当“游
客身份”进行处理,如果服务器不支持游客方式登录,则将会返回对应的出错代码给客户端。
该回调仅仅做为用户身份验证之用,不能在该回调里面调用其它的 API(如向指定用户传输透明通道数据:BRAS_TransBuf 等),因为该回调没有返回之前,
用户在内核就没有与 USERID 进行绑定,所以这时调用其它的 API 将是无效的,如 需 要 在 用 户 登 录 之 后 就 发 送 一 些 数 据 , 则 可 在
BRAS_OnUserLoginAction_CallBack 回调函数里面进行处理。
回复 支持 反对

使用道具 举报

4

主题

11

帖子

58

积分

注册会员

Rank: 2

积分
58
10#
发表于 2018-3-24 22:49:42 | 只看该作者
admin 发表于 2013-6-21 12:02
若在AnyChat之外已经进行了一次用户身份验证,只是希望用AnyChat实现流媒体通信服务,而且不希望在业务服务 ...

请问这个逻辑在java里边怎么实现呢?
回复 支持 反对

使用道具 举报

9#
发表于 2015-7-1 09:04:08 | 只看该作者
z289674881 发表于 2015-6-30 21:20
程序有没有电子白板功能呢?

您好,我们提供有相关的接口,可以利用桌面共享的接口去实现电子白板的功能的。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

19

积分

新手上路

Rank: 1

积分
19
8#
发表于 2015-6-30 21:20:43 | 只看该作者
程序有没有电子白板功能呢?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
7#
发表于 2015-1-27 00:58:32 | 只看该作者
hh呵呵呵呵呵
回复 支持 反对

使用道具 举报

26

主题

161

帖子

485

积分

中级会员

Rank: 3Rank: 3

积分
485
6#
发表于 2014-11-28 10:58:18 | 只看该作者
admin 发表于 2014-11-28 10:54
关于房间,请参考:http://bbs.anychat.cn/forum.php?mod=viewthread&tid=86

好的,谢谢
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9080

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9080
5#
 楼主| 发表于 2014-11-28 10:54:42 | 只看该作者
回复 支持 反对

使用道具 举报

26

主题

161

帖子

485

积分

中级会员

Rank: 3Rank: 3

积分
485
地板
发表于 2014-11-28 10:44:44 | 只看该作者
有没有相关的API可供使用?
回复 支持 反对

使用道具 举报

26

主题

161

帖子

485

积分

中级会员

Rank: 3Rank: 3

积分
485
板凳
发表于 2014-11-28 10:42:47 | 只看该作者
请问,客户登录后业务服务器是否可以自动创建和分配房间?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-5-24 08:45 , Processed in 0.188886 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表