在微信窗口,輸入的信息有限,我們需要將一些信息分多次請求。
比如:在進行用戶綁定時,我們需要輸入用戶的相關信息,比如:用戶名、密碼,或者姓名、電話號碼,服務端驗證通過,即可將系統用戶與微信用戶綁定。
然后,此微信賬戶就有一定的功能權限了,可以查積分,消費記錄等。服務號:招商銀行信用卡,就有很多功能。
微信客戶端無法緩存信息,而且輸入信息有限,需要進行多次請求,在服務端保存當前會話狀態。這就需要Session。
本文以用戶認證,綁定賬號為例,來說明具體處理。
一、創建通用的Session處理機制。
為了更好的說明原理,便于擴展,我們來自己設計Session。當然,這里也可以使用System.Web.SessionState.HttpSessionState,這是Web常用的Session機制。
1、自定義Session
用于存儲會話片段以及相關數據。
class Session { /// <summary> /// 緩存hashtable /// </summary> private static Hashtable mDic = new Hashtable(); /// <summary> /// 添加 /// </summary> /// <param name="key">key</param> /// <param name="value">value</param> public static void Add(string key, object value) { mDic[key] = value; } /// <summary> /// 移除 /// </summary> /// <param name="key">key</param> public static void Remove(string key) { if (Contains(key)) { mDic.Remove(key); } } /// <summary> /// 設置值 /// </summary> /// <param name="key"></param> /// <param name="value"></param> public static void Set(string key, object value) { mDic[key] = value; } /// <summary> /// 獲取值 /// </summary> /// <param name="key"></param> /// <returns></returns> public static object Get(string key) { return mDic[key]; } /// <summary> /// 是否含有 /// </summary> /// <param name="key">key</param> /// <returns>bool</returns> public static bool Contains(string key) { return mDic.ContainsKey(key); } /// <summary> /// 清空所有項 /// </summary> public static void Clear() { mDic.Clear(); } }2、操作類型
記錄具體的操作類型,標識當前會話的具體操作
/// <summary> /// 操作類型 /// </summary> enum Operation { /// <summary> /// 認證 /// </summary> Auth, /// <summary> /// 添加用戶 /// </summary> CreateUser }3、操作過程枚舉
用于標識當前操作,處于哪一個階段,不同階段做不同的處理。
新聞熱點
疑難解答