通过Flex读写浏览器中的cookie的方法整理

一直以来都想做个网站管理的编辑器,但是我预估到的最大问题就是用flex来访问和读取网站,其中就用到了登陆校验的cookie,但是找了好多的网站,都没有找到相关的,信心,只是在adobe的官方的api中介绍了新增的htmlLoader 的相关属性方法,无济于事,自己去研究,调了又调,试了又试的,终于向客户端写cookie成功了,跟大家分享一下: 其实有两种方法可行: 方法一:是再模板html中添加一段js写cookie的代码,再flex端用ExternalInterface.call来调用,感觉麻烦,没用这种方法: 方法二:直接在flex端向客户端写cookie 关键代码是:
1
2
3
4
5
6
7
8
9
10
//向客户端写入cookie  
private function setMyCookie(name:String,value:String) :void{   
ExternalInterface.call("function (name,value) " +     
"{ " +   
" var Days = 30; "+  
" var exp = new Date();"+  
" exp.setTime(exp.getTime() + Days*24*60*60*1000); "+     
" document.cookie = name+ '='+ escape (value) + ';expires=' + exp.toGMTString();" +  
" }",name,value);  
}
完整的用户登录代码,当用户登录成功时,调用向客户端写cookie的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version="1.0" encoding="utf-8"?>  
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"  xmlns:mx="library://ns.adobe.com/flex/halo" xmlns:code="http://code.google.com/p/flexlib/">  
 <s:states>  
       <s:State name="maxState"/>  
        <s:State name="minState"/>  
    </s:states>  
    <s:layout>  
        <s:BasicLayout/>  
    </s:layout>  
        
    <fx:Script>     
        <![CDATA[  
            import mx.controls.Alert;  
            import net.shopin.service.*;  
            import net.shopin.vo.SysUserVO;  
            import net.util.ShareScript;  
                
            private var sysUser:SysUserVO = null;  
                
            //公共变量  
            private var shareFunc:ShareScript = new ShareScript();  
                
            //监听用户的键盘回车事件  
            private function keyHandler(event: KeyboardEvent): void {  
                if (event.keyCode == 13) {  
                    login();  
                }  
            }  
                
            //退出系统  
            private function logOut():void 
            {  
                logs.visible = true;  
                shareFunc.clearShare();  
                resetHandle();  
            }  
                
            //用户登录  
            private function login():void {  
                if (username.text=="" || password.text=="") {  
                    Alert.show("用户名和密码不能为空");  
                }else{  
                    var service:ReportService = new ReportService(resultLogin);  
                    service.login(username.text);  
                }  
            }  
                
            //登录回调信息  
            private function resultLogin(data:Object):void {  
                sysUser = data as SysUserVO;  
                if (sysUser.loginName != null && sysUser.userPassword == password.text) {  
                        
                    logs.visible = false;  
                    if (rec.selected) {  
                        shareFunc.writeShare(username.text, password.text);  
                    }  
                    setMyCookie(sysUser.loginName,sysUser.userPassword);  
                } else {  
                    password.text = "";  
                    Alert.show("用户名或密码有误,请重新输入!");  
                }  
            }  
            //重置  
            private function resetHandle():void 
            {  
                username.text = "";  
                password.text = "";  
            }  
                
            //向客户端写入cookie信息  
            private function setMyCookie(name:String,value:String) :void{   
                ExternalInterface.call("function (name,value) " +     
                    "{ " +   
                    " var Days = 30; "+  
                    " var exp = new Date();"+  
                    " exp.setTime(exp.getTime() + Days*24*60*60*1000); "+     
                    " document.cookie = name+ '='+ escape (value) + ';expires=' + exp.toGMTString();" +  
                    " }",name,value);  
            }   
                
        ]]>  
    </fx:Script>  
        
        
    <mx:Panel x="414.5" y="274" width="387" height="305" layout="absolute" title="管理员登录" fontFamily="Georgia" 
              fontSize="14" id="logs" visible="true" width.maxState="353" height.maxState="268" x.maxState="411.5" y.maxState="274" title.maxState="管理员登录">  
        <mx:Label x="41.5" y="33" text="用户名" fontWeight="bold"/>  
        <mx:Label x="51.5" y="81" text="密码" fontWeight="bold"/>  
        <mx:TextInput x="94.5" y="33" id="username" width="174.5" />  
        <mx:TextInput x="94.5" y="79" id="password" displayAsPassword="true" width="174.5" />  
            
        <mx:Button x="96.5" y="211" label="登录" id="btnLogin" click="login();" x.maxState="97.5" y.maxState="175"/>  
        <mx:Button x="198.5" y="211" label="重置" id="btnReset" click="resetHandle()" x.maxState="199.5" y.maxState="175"/>  
            
        <mx:CheckBox id="rec" x="96.5" y="166" label="记住用户名密码" height="37" x.maxState="97.5" y.maxState="126"/>  
    </mx:Panel>  
        
</s:Application> 

posted on   AS3.0  阅读(297)  评论(0编辑  收藏  举报

导航

< 2012年12月 >
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示