分享一個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失效 然後跳轉到登陸頁面了





後臺用的 JFinal做的,用JFinal的 handler和Interceptor做權限過濾非常方便

以前本系統的後臺是是用strtus+mybatis做的 現在換JFinal後各種輕鬆 雖然改動很大 但是很值得啊 現在看起來舒服多了

再次感謝 @JFinal


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章