zoukankan      html  css  js  c++  java
  • 通过Flex读写浏览器中的cookie的方法整理

    一直以来都想做个网站管理的编辑器,但是我预估到的最大问题就是用flex来访问和读取网站,其中就用到了登陆校验的cookie,但是找了好多的网站,都没有找到相关的,信心,只是在adobe的官方的api中介绍了新增的htmlLoader 的相关属性方法,无济于事,自己去研究,调了又调,试了又试的,终于向客户端写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的代码
    <?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>  
    
  • 相关阅读:
    Chapter 03Using SingleRow Functions to Customize Output(03)
    Chapter 03Using SingleRow Functions to Customize Output(01)
    Chapter 04Using Conversion Functions and Conditional ExpressionsNesting Functions
    Chapter 04Using Conversion Functions and Conditional ExpressionsGeneral Functions
    Chapter 11Creating Other Schema Objects Index
    传奇程序员John Carmack 访谈实录 (zz.is2120)
    保持简单纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
    王江民:传奇一生 (zz.is2120)
    2011台湾游日月潭
    2011台湾游星云大师的佛光寺
  • 原文地址:https://www.cnblogs.com/AS30/p/3113256.html
Copyright © 2011-2022 走看看