game_server.game_auth
简介
组件接口
game_auth.gs
将一个验证服务器账号认证成功后获得的token兑换成登录游戏服务器的的token 一些简单说明:
- 本模块是做为pkg.game.server的LoginD认证模块的一种实现,为游戏服务器提供认证功能: a. 检查客户端提供的凭据,并兑换成游戏服务器的凭据 b. 检查游戏服务器的凭据是否有效(阅后即焚或者可重复检查)
- 本模块默认行为的一些说明 a. 默认接入authserver(可设置no_authserver屏蔽) b. 客户端默认的验证行为(可设置auth_func): 客户端提供账号和验证服务器token做为凭据,通过验证后兑换一个gs token c. 服务器默认的验证行为(可设置check_auth_func): 提供服务器token以及待验证数据进行验证 d. 默认gs token生成为new_guid(可设置token_func) e. gs token默认超时为180秒 f. 默认token数量超过10000个启动超时回收,回收检查间隔为30秒
- 本模块需要调用setup()函数设置初始化
函数原型 | 函数作用 |
---|---|
void setup(map para) | 设置初始化 |
string alloc_token(string account, map token_binding_data) | 分配一个gs token |
bool free_token(string token) | 回收一个gs token |
mixed find_token(string token) | 查找一个gs token并返回和该token绑定的数据 |
array check_repeatable_auth(map auth_data) | 检查待验证的数据是否有效(验证成功后不删除token-可多次重复检查) |
array check_auth(map auth_data) | 检查待验证的数据是否有效(验证成功后删除token-阅后即焚) |
array auth(string account, string pass_md5, map auth_args) | 验证客户端凭证(将客户端的凭证兑 换成游戏服务器的token) |
SimpleAccountD.gs
本地默认的简单账号模块,用于不连接authserver时候的一个默认账号实现
包括账号的增删查改
样例
public void test()
{
cfg.init_by_map({
"server_id" : 1,
"disable_mongo" : true
});
server_base.boot();
LOAD_PKG(game_auth);
map auth_para = {
"token_timeout" : 180,
"token_func" : () { return new_guid(); },
"auth_func" : (string account, string pass_md5, map auth_args) {
return [ true, nil ];
},
"check_auth_func" : (map auth_data) {
return [ true, nil ];
},
"no_authserver" : true
};
game_auth.setup(auth_para);
// 分配一个token
string token = game_auth.alloc_token("test", {});
// 验证token
test_equal(game_auth.find_token(token) != nil, true);
// 释放token
game_auth.free_token(token);
// 再次验证token
test_equal(game_auth.find_token(token) == nil, true);
}