as3远程验证及使用SharedObject将结果存储到本地

这段代码的功能:就是实现一次远程验证,如果正确,则存储结果,以后再也无需验证

具体细节是:

通过本地程序使用时,发送一个登录帐号密码到远端的验证服务器。如果正确,服务器返回匹配的姓名,如果不对,返回一个“NO”字符串。

一旦接收到正确的结果,本地程序即执行写SharedObject动作,将姓名写入。以后每次在本地使用这个程序,只要SharedObject不为空,则不需要再做远程验证。

注意:发现用FLASH CS6调试模式可以直接发送数据,打包成EXE也可以,但是本地生成的SWF文件,不能直接发送数据,可能是出于安全考虑。

以下是部分代码:

XML/HTML代码
  1. package  
  2. {  
  3.     import flash.events.MouseEvent;  
  4.     import flash.events.Event;  
  5.     import flash.events.IOErrorEvent;  
  6.     import flash.display.MovieClip;  
  7.     import flash.net.navigateToURL;  
  8.     import flash.net.URLRequest;  
  9.     import flash.net.URLLoader;  
  10.     import flash.net.URLVariables;  
  11.     import flash.net.URLLoaderDataFormat;  
  12.     import flash.net.URLRequestMethod;  
  13.     import flash.events.HTTPStatusEvent;  
  14.     import flash.net.SharedObject;  
  15.     import flash.ui.Mouse;  
  16.       
  17.     public class test_so extends MovieClip  
  18.     {  
  19.           
  20.         var mydate:SharedObject;  
  21.         var myLoader:URLLoader;  
  22.         var variables:URLVariables;  
  23.         //var _fileName:String = "http://www.contactu.net/FlashRequest/Login.asp";  
  24.         var isPostSuccess:Boolean = false;  
  25.           
  26.         public function test_so()  
  27.         {  
  28.             btn1.buttonMode = btn2.buttonMode = true;  
  29.             btn2.txt.mouseEnabled = false;  
  30.             btn2.visible = false;  
  31.             initSO(); //判断本地身份  
  32.             variables = new URLVariables();  
  33.             btn1.addEventListener(MouseEvent.CLICK, send_info);  
  34.         }  
  35.           
  36.         private function initSO():void  
  37.         {  
  38.             mydate = SharedObject.getLocal("txtAttribute", "/");  
  39.             if (mydate.size != 0)  
  40.             { //判断是否有数据  
  41.                 var _name = mydate.data["test"];  
  42.                 txt_feed.appendText(_name + "已经登录" + "\n");  
  43.                 btn2.visible = true;  
  44.                 btn2.txt.text = "以" + _name + "身份进入";  
  45.             }  
  46.             else  
  47.             {  
  48.                 txt_feed.appendText("未登录,不能进入" + "\n");  
  49.             }  
  50.         }  
  51.           
  52.         private function send_info(e:MouseEvent):void  
  53.         {  
  54.             txt_feed.appendText("ccc");  
  55.               
  56.             if (txt_id.text == "" || txt_pass.text == "")  
  57.             {  
  58.                 txt_feed.appendText("空帐号或密码" + "\n");  
  59.                 return;  
  60.             }  
  61.             variables.id = txt_id.text;  
  62.             variables.pass = txt_pass.text;  
  63.               
  64.             var loadUrl:URLRequest = new URLRequest(txt_domain.text);  
  65.             loadUrl.method = URLRequestMethod.GET;  
  66.             loadUrl.data = variables;  
  67.               
  68.             myLoader = new URLLoader();  
  69.             myLoader.dataFormat = URLLoaderDataFormat.TEXT;  
  70.             myLoader.addEventListener(Event.COMPLETE, sendComplete);  
  71.             //myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);  
  72.             myLoader.addEventListener(IOErrorEvent.IO_ERROR, loadError);  
  73.             myLoader.load(loadUrl);  
  74.         }  
  75.           
  76.         //如果发送成功  
  77.         private function sendComplete(e:Event):void  
  78.         {  
  79.             txt_feed.appendText(">>>本次远程返回数据:" + e.target.data + "\n");  
  80.               
  81.             //保存文件数据  
  82.             if (e.target.data == "NO")  
  83.             {  
  84.                 txt_feed.appendText("aaa");  
  85.                 txt_feed.appendText("帐号或密码有误!" + "\n");  
  86.             }  
  87.             else  
  88.             {  
  89.                 txt_feed.appendText("bbb");  
  90.                 mydate = SharedObject.getLocal("txtAttribute", "/");  
  91.                 mydate.data["test"] = e.target.data;  
  92.                 mydate.flush();  
  93.                   
  94.                 initSO();  
  95.             }  
  96.         }  
  97.           
  98.         function httpStatusHandler(e:Event):void  
  99.         {  
  100.             txt_feed.appendText("httpStatusHandler:" + e);  
  101.         }  
  102.           
  103.         private function loadError(e:Event):void  
  104.         {  
  105.             txt_feed.appendText("\n写出失败!");  
  106.         }  
  107.       
  108.     }  
  109.   
  110. }  

 



[本日志由 admin 于 2013-06-25 03:25 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: SharedObject
相关日志:
评论: 1 | 引用: 0 | 查看次数: 4436
七月的路人甲
回复回复七月的路人甲[2014-07-13 00:47 AM | | | del | 取消审核]
支持博主,友情路过
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 300 字 | UBB代码 关闭 | [img]标签 关闭