FMS异步与其他web语言达成异步验证

如做到 FLASH 输入账号 密码去取得数据库中的数据, 目前需要.net 或php做中转。方法有sendandload和WebService较为常用(目前AS2  AS3本人不熟不知道能否直接与数据沟通)。 但大家假想,如果用FLASH客户端直接去从取。如果页面地址暴露将会有什么后果。。不能想都知道。
最理想的处理方法则是 用FLASH 把账号,密码传给FMS,让FMS去做和数据库登录验证的工作。这样才能达到最安全的机制.如下图的验证机制。

从图上可以看出,验证的主要还是由.net和php做验证。FMS只是做了把账号密码中转了一次。但这样做法有很大用途。这样让玩家无法得取.net的处理页面具体地址。要想知道就得把FMS服务器给黑了才知道,比起写在FLASH客户端用破解软件要安全的多得多。特别是现在FLASH破解软件满天飞的时代

但sendandload和WebService的处理方式是异步的,要经过访问和返回的步骤。特别在网络不佳的时候还有等待的处理。下面的例子用sendandload来简单说明怎么处理异步的FMS验证操作。

=========FMS端========
function userLogin(_newClient,usrName,usrPwd){
    trace("用户登录")
    thisObj=this
    //用户登录GameLogin()         
    var Login = new LoadVars()
    Login.onLoad = function(success) {
        if (success) {
            if (this.usrOkFlag == "ok") {
                trace(usrName+"登录成功")
                application.acceptConnection (_newClient);
                //取数据过程
                _newClient.myData=this.data    
                //发送给客户端,登录成功。让它初始
                _newClient.call("init")
            }                    
        } else {
            application.rejectConnection (_newClient, "登录失败!")
        }
    };    
    sendUrl="http://www.xxx.com/xxx.aspx?usrName="+usrName+"&usrPwd"+usrPwd+"&"
    Login.sendAndLoad(sendUrl, Login, "GET");
    //    
}

application.onConnect = function(newClient,usrName,usrPwd) {
    userLogin(newClient,usrName,usrPwd)    
};
//

大家可以看到 在登录的时候去调用一个function 把 new LoadVars() 写在该函数中。这样同时N人进入,
他会自动处理多个function。而每个function中就是一个new LoadVars。并把处理的结果调回了相应的function中达到异步的接受事件.
//=====================================
//
//转载请注明出处:羽柴 鬼铃-blog  www.ycflash.com/blog
//
//=====================================

[本日志由 admin 于 2008-05-08 06:29 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 1 | 引用: 0 | 查看次数: 2199
回复回复小王[2007-11-13 12:00 AM | del]
写的不错啊。支持一个!
发表评论
你没有权限发表评论!