FLEX客户端写cookie

来源:互联网 发布:代理服务器端口是什么 编辑:程序博客网 时间:2024/04/30 09:41

网上找了很多资料,调了又调,试了又试的,终于向客户端写cookie成功了,跟大家分享一下:

其实有两种方法可行:

方法一:是再模板html中添加一段js写cookie的代码,再flex端用ExternalInterface.call来调用,感觉麻烦,没用这种方法:

方法二:直接在flex端向客户端写cookie

关键代码是:

//向客户端写入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的代码

Java代码

<?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>