Flex使用cookie保存登状态
flex系统要实现普通html系统刷新页面保留登录信息,一个方法是借用js来操作cookie来实现,下边是一个实现的例子:
第一步:在主index.html里边加上两个js方法
//获取cookie内容 function GetCookie(name) { var arr = document.cookie.match(new RegExp("(^|)"+name+"=([^;]*)(;|$)")); if(arr != null) { return unescape(arr[2]); } } //设置cookie以及失效时间 //这是有设定过期时间的使用示例: //s20是代表20秒 //h是指小时,如12小时则是:h12 //d是天数,30天则:d30 //比如setCookie("name","hayden","s20"); function SetCookie(name,value,time) { var strsec = getsec(time); var exp = new Date(); exp.setTime(exp.getTime() + strsec*1); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getsec(str) { var str1=str.substring(1,str.length)*1; var str2=str.substring(0,1); if (str2=="s") { return str1*1000; } else if (str2=="h") { return str1*60*60*1000; } else if (str2=="d") { return str1*24*60*60*1000; } }
第二步:在Flex程序里加上调用js的方法
/** * 根据名称获取cookie中对应的内容 * */ public function getCookie(name:String):String { var jsFunction:String = "GetCookie"; var value:String = ""; if(ExternalInterface.available) { value = ExternalInterface.call(jsFunction,name); } return value; } /** * 设置cookie内容 * */ public function setCookie(key:String,value:String):void { var jsFunction:String = "SetCookie"; if(ExternalInterface.available) { ExternalInterface.call(jsFunction,key,value); } }
在登陆成功以后,把用户名和密码保存到cookie(为了安全,密码应该加密保存,这里就不写了)
//登陆成功 ,写入cookie setCookie("username",username_id.text); setCookie("password",password_id.text);
第三步:每次在主程序加载完的时候,读取一下cookie里用户名和密码的内容,如果不为空,就自动执行登陆
username_id.text = getCookie("username"); password_id.text = getCookie("password"); if(username_id.text && password_id.text) { doLogion(); }
记得在退出系统的时候,也清空一下cookie,就OK啦!
//清空cookie FlexGlobals.topLevelApplication.setCookie("username",""); FlexGlobals.topLevelApplication.setCookie("password","");