一個.net下通用的Cookie操作類

iDotNetSpace發表於2009-01-13

筆者曾經參與一個大型多使用者商城的開發,系統使用者角色很多,有買家,賣家,代理商,系統管理員,普通管理員,超級管理員等,這些使用者都涉及到登陸系統,然後建立cookies的問題,由於角色的不同,這些使用者登陸系統後,所建的cookies都相對獨立,而且對一個多使用者商城來說,cookies區分域很重要,不同的域名要建不同的域。因此筆者在開發的過程中,寫了很多次的建cookies,取cookies的程式碼,不勝其煩!

既然都是建cookies,那麼肯定有共同點,我們何不抽象出來,寫一個通用的Cookie操作類呢,下面筆者就以.net為例,來說明下如何實現這個類吧!

/////以下是建cookies的函式

public void SetCookies(string domain, string type, XieGou.XGMap map)
  {
   HttpCookie cookie = new HttpCookie(type);//定義cookie物件
   DateTime dt = DateTime.Now;//定義時間物件
   TimeSpan ts=new TimeSpan(1,0,0,0);//cookie有效作用時間,具體查msdn
   cookie.Expires = dt.Add(ts);//新增作用時間
   cookie.Domain = domain;
   for(int i =0 ;i < map.Size() ; i++)
   {
    cookie.Values.Add(map.GetTag(i),map.GetValue(i).ToString());//增加屬性
   }
   page.Response.AppendCookie(cookie);//確定寫入cookie中
  }

/////以下是取cookies的函式

public string GetCookies(string type, string name)
  {
   if(page.Request.Cookies[type] != null)
   {
    if(page.Request.Cookies[type].Values[name] != null)
    {
     return page.Request.Cookies[type].Values[name].ToString();
    }
    else
    {
     return "0";
    }
   }
   return "0";
  }

下面我們來看下,如何呼叫這兩個函式:

XieGou.XGMap map = new XGMap();    ///這裡用到的Map類,可以參考網上資料寫一個
   map.Add("shopid",shop.m_id.ToString());   ///新增map對應表
   map.Add("shopname",shop.m_name.ToString());
   func.SetCookies(".shopxg.com","shopxg_namespace",map);

原理其實很簡單,先定義一個map類,把要建的cookies名稱和值放到map表裡,然後統一由SetCookies來建cookies,這樣寫的好處,就是可以少寫很多程式碼,特別是需要頻繁建cookies的網站!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-536617/,如需轉載,請註明出處,否則將追究法律責任。

相關文章