SmartFoxServer 2X 笔记一:login request (转)
发布日期:2021-06-24 19:04:56 浏览次数:4 分类:技术文章

本文共 1721 字,大约阅读时间需要 5 分钟。

 

这里只大概讲一下使用到的 API 和登录时的一些要点,其他具体的细节还是需要自己看官方文档的。

    前端 Flash 使用到的登录请求 API 是:
            (userName:String, password:String, zoneName:String, params: = null)
                userName    登录用户的名称。
                password    登录密码。
                zoneName    要登录的打听名称。
                params      自定义参数。
    这里说一下密码的用法。密码可以是用户自定义的密码,在 Flash 端登录大厅前让用户输入登陆密码,然后将密码以参数的形式发送到服务器端,由服务器端进行认证。密码也可以是 Flash 和服务器端共同定义好的一个公共密码,在 Flash 发出登录请求的时候,不需要用户输入登录密码,而是将之前定义好的统一的密码发送到服务器端,由服务器端统一进行登录认证。
    服务器端的登录认证也是由特定的 API 负责的,这里简单的实例一下服务器端针对登录认证的处理代码片段。
            public class LoginEventHandler extends BaseServerEventHandler {
                @Override
                public void handleServerEvent(ISFSEvent evt) throws SFSException {
                    //取得登录用户名称 userName
                    String userName = (String) evt.getParameter(SFSEventParam.LOGIN_NAME);
                    //取得登录密码 password
                    String password = (String) evt.getParameter(SFSEventParam.LOGIN_PASSWORD);
                    //取得 Session
                    ISession session = (ISession) evt.getParameter(SFSEventParam.SESSION);
                    //取得登录请求响应数据
                    ISFSObject response = (ISFSObject) evt.getParameter(SFSEventParam.LOGIN_OUT_DATA);
                    //进行登录认证
                    if ( true == getApi().checkSecurePassword(session, "密码", password ) {
                        //将要返回给前端的数据装入
                        response.putBoolean( "success", true );
                    }else{
                        //抛出登录错误的异常
                        response.putBoolean( "success", false );
                        throw new SFSLoginException("passwd is not match");
                    }
    这里需要说明的有三点。第一,通过 checkSecurePassword 进行登录认证时,第二个参数所填写的密码应与 Flash 传入的密码是一致的,在 Flash 调用 LoginRequest 时,第二个参数 password 加密后传给服务器端,所以服务器端得到的 password 是加密过的密码。
    第二,登录成功后不需要向 Flash 发送数据,而是将要提供给 Flash 的数据都存入 response 变量,及 SFS 提供的 LOGIN_OUT_DATA,将所需的数据全部存入后,SFS 会自动返回这个对象给 Flash 端。
    第三,当登录失败时,抛出 SFSLoginException 异常,SFS 也会自动将异常响应给 Flash 端,不需要单独向 Flash 端 Send 数据。
    最后补充一下,Flash 端在响应登录成功回调的时候,从回调响应函数参数 evt:SFSEvent 中,由服务器端传递过来的数据都存在 data 节点,得到服务器端的数据方法是:
                evt.params.data.success;

转载于:https://www.cnblogs.com/xanqi/archive/2012/11/29/2794603.html

转载地址:https://blog.csdn.net/weixin_34248258/article/details/93062598 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Oracle中查询不出数据,为什么在程序中还能显示数据解决方法
下一篇:TextBox TextMode为password情况下如何赋值

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月19日 04时07分46秒