分享一个Flex管理系统 Session超时的时候 用户操作时自动提示并跳转到登陆页面的方法

网页登陆一般都是半小时不动就超时了 对吧

我做了一个会员管理系统,前台是flex的,相信有很多人用flex做这样的管理系统

但是如果session超时后,用户操作没有提示一直在那里点,系统没有任何回应,用户体验是不是就差了呢?

我这里有一个解决的方法

 

我的flex端是用 URLRequest 和 URLLoader 来从后台获取数据的

于是我只需要重写 URLLoader 判断返回的数据是否包含了提示登陆的信息就行了

下面是重写URLLoader

import flash.net.URLLoader;
 import flash.net.URLRequest;
 import flash.net.navigateToURL;
 
 import mx.controls.Alert;
 /**
  * 重写JSONDecoder
  * 如果是登陆超时了 就提示超时 并且跳转到登陆页面
  */
 public class MyURLLoader extends URLLoader
 {
  public function MyURLLoader(request:URLRequest=null)
  {
   super(request);
  }
  
  /**
   * 得到load返回的数据
   * 判断处理是否超时,需要跳转到登陆页面
  * 本来我是想重写 data 属性的,无奈没成功,提示不兼容的覆盖,所以只能重新写一个方法来处理data了
   */ 
  public function getDate():String{
   // 判断返回的字符串是否包含 会员管理系统
   if (super.data.toString().indexOf("会员管理系统") != -1)
   {
    var confirmHandler:Function=function(dlgObj:Object):void
    {
     if (dlgObj.detail == Alert.YES)
     {
      navigateToURL(new URLRequest("/login.html"), "_self");
     }
    }
    Alert.show("登陆超时了,您需要重新登陆会员管理系统!!", "温馨提示:", Alert.YES | Alert.NO, null, confirmHandler, null, Alert.NO);
   }
   return super.data;
  }
 }

 

 

然后所有从后台取数据的loder都用MyURLLoader

var actionComplete:Function=function(e:Event):void
   {
   // 原来是 loader.data 
  // 本来我是想重写 data 属性的,无奈没成功,提示不兼容的覆盖,
   //var decoder:JSONDecoder=new JSONDecoder(loader.getDate());
    
   }
   var request:URLRequest=new URLRequest(com.hainayun.flex.common.sys.members.Card.ACT_URL + "getAll");
   request.method="POST";
   var loader:MyURLLoader=new MyURLLoader(request);
   loader.addEventListener(Event.COMPLETE, actionComplete);

 

当然后台是需要判断当session失效的时候跳转到 /login.html 也就是登陆页面

 

当session失效后 不管用户点什么操作 都会提示session失效 然后跳转到登陆页面了

 

分享一个Flex管理系统 Session超时的时候 用户操作时自动提示并跳转到登陆页面的方法

 

 

后台用的 JFinal做的,用JFinal的 handler和Interceptor做权限过滤非常方便

以前本系统的后台是是用strtus+mybatis做的 现在换JFinal后各种轻松 虽然改动很大 但是很值得啊 现在看起来舒服多了

再次感谢 @JFinal

你可能感兴趣的:(分享一个Flex管理系统 Session超时的时候 用户操作时自动提示并跳转到登陆页面的方法)