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>  
    
  • 相关阅读:
    vue中使用clipboard.js复制分本
    聊聊IOCP,聊聊异步编程
    dubbo RPC超时异常小结
    redis4.0 集群,jedis客户端连接配置
    Centos7 Zookeeper
    阿里云Centos 7.4 mssql-server
    Redis4.0 Cluster — Centos7
    Elasticsearch学习笔记 一
    Centos7安装ES 和 Docker搭建ES
    使用Docker快速创建.Net Core2.0 Nginx负载均衡节点
  • 原文地址:https://www.cnblogs.com/AS30/p/3113256.html
Copyright © 2011-2022 走看看