分享一个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,?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失效 然后跳转到登陆页面了 ? ? ? 后台用的 JFinal做的,用JFinal的 handler和Interceptor做权限过滤非常方便 以前本系统的后台是是用strtus+mybatis做的 现在换JFinal后各种轻松 虽然改动很大 但是很值得啊 现在看起来舒服多了 再次感谢 @JFinal (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |