as3远程验证及使用SharedObject将结果存储到本地
作者:admin 日期:2013-06-25这段代码的功能:就是实现一次远程验证,如果正确,则存储结果,以后再也无需验证。
具体细节是:
通过本地程序使用时,发送一个登录帐号密码到远端的验证服务器。如果正确,服务器返回匹配的姓名,如果不对,返回一个“NO”字符串。
一旦接收到正确的结果,本地程序即执行写SharedObject动作,将姓名写入。以后每次在本地使用这个程序,只要SharedObject不为空,则不需要再做远程验证。
注意:发现用FLASH CS6调试模式可以直接发送数据,打包成EXE也可以,但是本地生成的SWF文件,不能直接发送数据,可能是出于安全考虑。
以下是部分代码:
XML/HTML代码
- package
- {
- import flash.events.MouseEvent;
- import flash.events.Event;
- import flash.events.IOErrorEvent;
- import flash.display.MovieClip;
- import flash.net.navigateToURL;
- import flash.net.URLRequest;
- import flash.net.URLLoader;
- import flash.net.URLVariables;
- import flash.net.URLLoaderDataFormat;
- import flash.net.URLRequestMethod;
- import flash.events.HTTPStatusEvent;
- import flash.net.SharedObject;
- import flash.ui.Mouse;
- public class test_so extends MovieClip
- {
- var mydate:SharedObject;
- var myLoader:URLLoader;
- var variables:URLVariables;
- //var _fileName:String = "http://www.contactu.net/FlashRequest/Login.asp";
- var isPostSuccess:Boolean = false;
- public function test_so()
- {
- btn1.buttonMode = btn2.buttonMode = true;
- btn2.txt.mouseEnabled = false;
- btn2.visible = false;
- initSO(); //判断本地身份
- variables = new URLVariables();
- btn1.addEventListener(MouseEvent.CLICK, send_info);
- }
- private function initSO():void
- {
- mydate = SharedObject.getLocal("txtAttribute", "/");
- if (mydate.size != 0)
- { //判断是否有数据
- var _name = mydate.data["test"];
- txt_feed.appendText(_name + "已经登录" + "\n");
- btn2.visible = true;
- btn2.txt.text = "以" + _name + "身份进入";
- }
- else
- {
- txt_feed.appendText("未登录,不能进入" + "\n");
- }
- }
- private function send_info(e:MouseEvent):void
- {
- txt_feed.appendText("ccc");
- if (txt_id.text == "" || txt_pass.text == "")
- {
- txt_feed.appendText("空帐号或密码" + "\n");
- return;
- }
- variables.id = txt_id.text;
- variables.pass = txt_pass.text;
- var loadUrl:URLRequest = new URLRequest(txt_domain.text);
- loadUrl.method = URLRequestMethod.GET;
- loadUrl.data = variables;
- myLoader = new URLLoader();
- myLoader.dataFormat = URLLoaderDataFormat.TEXT;
- myLoader.addEventListener(Event.COMPLETE, sendComplete);
- //myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
- myLoader.addEventListener(IOErrorEvent.IO_ERROR, loadError);
- myLoader.load(loadUrl);
- }
- //如果发送成功
- private function sendComplete(e:Event):void
- {
- txt_feed.appendText(">>>本次远程返回数据:" + e.target.data + "\n");
- //保存文件数据
- if (e.target.data == "NO")
- {
- txt_feed.appendText("aaa");
- txt_feed.appendText("帐号或密码有误!" + "\n");
- }
- else
- {
- txt_feed.appendText("bbb");
- mydate = SharedObject.getLocal("txtAttribute", "/");
- mydate.data["test"] = e.target.data;
- mydate.flush();
- initSO();
- }
- }
- function httpStatusHandler(e:Event):void
- {
- txt_feed.appendText("httpStatusHandler:" + e);
- }
- private function loadError(e:Event):void
- {
- txt_feed.appendText("\n写出失败!");
- }
- }
- }
评论: 1 | 引用: 0 | 查看次数: 8190
回复七月的路人甲[2014-07-13 00:47 AM | | | | 取消审核]
支持博主,友情路过
发表评论