使用java编写SmartFoxServer自定义安全验证登录扩展
最近接触的东西有点杂,在写SmartFoxServer(以下简称SFS)服务端扩展时发现actionscript竟然只支持1.0,无奈只好用从来没有接触过的java来编写,参考官方cookbook及手册,成功实现了自定义安全验证登录扩展。
系统用的是CentOS5.2(x86_64),数据库是Oracle 11g,SFS版本为1.6.6。
数据库DEMO中的USERS表结构:
将连接java连接oracle的驱动(oracle/product/11.1.0/db_1/jdbc/lib/ojdbc6.jar,这里我用的是JDK1.6,所以用ojdbc6.jar,根据自己的需要复制驱动)复制到(SFS_PRO_1.6.6/jre/lib/ext/)下,然后修改SFS根目录下的config.xml,在Zones节点内加入如下Zone配置:
这里根据自己数据库配置来设置驱动、连接字符串、用户名、密码,如果用的是mysql,那么驱动和连接字符串应该如下:
编写扩展在写扩展之前,需要了解一下安全验证的机制,借用一下官方的图示:
第一步:从服务器获取随机码,把用户输入密码用md5加密,然后再把随机码和加密后的md5码再用md5加密,并发送给服务器。
第二步:服务器端从数据库取出经过md5加密的用户密码,同样用md5再加密一次随机码和取出的md5密码,然后和客户端发来的hash过的字符进行对比,来验证登录。
理解了这次,就可以开始编写Zone配置里的扩展demo_login了,关于扩展的具体说明,看官方手册就可以了,这里给出源码借参考:
这里有个关键点需要注意:配置文件中Zone标签的属性customLogin要设置成true才能使服务端响应loginRequest事件。 客户端处理
服务端的验证结果信息将通过客户端SmartFoxClient对象的onExtensionResponse返回,下面是该事件监听函数:
- 最新评论