ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一个.net下通用的Cookie操作类

一个.net下通用的Cookie操作类

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-01-13 13:34:56 0 删除 编辑

笔者曾经参与一个大型多用户商城的开发,系统用户角色很多,有买家,卖家,代理商,系统管理员,普通管理员,超级管理员等,这些用户都涉及到登陆系统,然后建立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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5347676