• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
陈适珍-一步一个脚印,向架构迈进
专注于电子商务领域,致力于电子商务与管理系统的完善结合!
博客园    首页    新随笔    联系   管理    订阅  订阅
ASP.NET 對cookies的操作

今天早上寫的對cookie的操作沒有調試好,作修正:

 public class BsCookie
    {
        //操作的cookie
        private HttpCookie _theCookie;
        //對應的cookie的名稱
        private string _cookieName;
        private bool _httpOnly = true;
        /// <summary>
        /// 是否只允許在服務器端訪問,默認只允許在服務端訪問
        /// </summary>
        public bool HttpOnly
        {
            get { return _httpOnly; }
            set { _httpOnly = value; }
        }
        private double _expireMinutes;
        /// <summary>
        /// Cookies有效的存放時間,以分鐘表示
        /// </summary>
        public double ExpireMinutes
        {
            get { return _expireMinutes; }
            set { _expireMinutes = value; }
        }
        public BsCookie(string name,double expireMinutes)
        {
            _cookieName = name;
            _expireMinutes = expireMinutes;
        }
        /// <summary>
        /// 讀取對應的cookie
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private HttpCookie GetCookieReq()
        {
            HttpRequest request = HttpContext.Current.Request;
            if (request != null)
            {
                HttpCookie cookie = request.Cookies[_cookieName];
                if (cookie != null)
                {
                    return cookie;
                }
            }
            return null;
        }
        /// <summary>
        /// 設置對應的cookie
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private HttpCookie GetCookieResponse()
        {
            HttpResponse response = HttpContext.Current.Response;
            HttpCookie cookie = GetCookieReq();
            if (cookie != null)
            {
                string value = cookie.Value;
                cookie = response.Cookies[_cookieName];
                cookie.Value = value;
            }
            else
            {
                cookie = new HttpCookie(_cookieName);
                cookie.HttpOnly = _httpOnly;
                response.Cookies.Add(cookie);
            }
            if (Math.Abs(_expireMinutes) > 1 && cookie != null)//在存在的情況的下,延長過期日期
            {
                cookie.Expires = DateTime.Now.AddMinutes(_expireMinutes);
            }
            return cookie;
        }
        /// <summary>
        /// 僅設置主鍵的
        /// </summary>
        /// <param name="name"></param>
        /// <param name="value"></param>
        /// <param name="exMinutes"></param>
        public void SetCookie(string value)
        {
            _theCookie = GetCookieResponse();
            _theCookie.Value = HttpUtility.HtmlEncode(AllCommon.Encrypt(value));
            if (Math.Abs(_expireMinutes) > 1)
            {
                _theCookie.Expires = DateTime.Now.AddMinutes(_expireMinutes);
            }           
        }
        /// <summary>
        /// 設置一組主鍵
        /// </summary>
        /// <param name="name"></param>
        /// <param name="keys"></param>
        /// <param name="exMinutes"></param>
        public void SetCookie(Hashtable keys)
        {
            _theCookie = GetCookieResponse();
            foreach (DictionaryEntry de in keys)
            {
                _theCookie.Values[de.Key.ToString()] = HttpUtility.HtmlEncode(AllCommon.Encrypt(de.Value.ToString()));
            }
        }
        /// <summary>
        /// 獲取單一的cookie主鍵值
        /// </summary>
        /// <param name="name"></param>
        /// <param name="exMinutes">需要延長的cookie的默認時間</param>
        /// <returns></returns>
        public string GetCookie()
        {
            _theCookie = GetCookieReq();
            if (_theCookie == null)
            {
                return string.Empty;
            }
            string thevalue = AllCommon.Decrypt(HttpUtility.HtmlDecode(_theCookie.Value));
            if (thevalue.Length > 0)
            {
                HttpCookie serverCookie = GetCookieResponse();
            }
            return thevalue;
        }
        /// <summary>
        /// 獲取一組對應的cookie值
        /// </summary>
        /// <param name="name"></param>
        /// <param name="exMinutes"></param>
        /// <returns></returns>
        public Hashtable GetCookiesKeys()
        {
            _theCookie = GetCookieReq();
            if (_theCookie == null)
            {
                return null;
            }            
            string[] keys = _theCookie.Values.AllKeys;
            if (keys.Length > 0)
            {
                Hashtable keyHash = new Hashtable();
                foreach (string key in keys)
                {
                    keyHash.Add(key, AllCommon.Decrypt(HttpUtility.HtmlDecode(_theCookie.Values[key])));
                }
                HttpCookie serverCookie = GetCookieResponse();
                return keyHash;
            }
            return null;
        }
        /// <summary>
        /// 获取一组里面的单一个值
        /// </summary>
        /// <param name="keyname"></param>
        /// <param name="exMinutes"></param>
        /// <returns></returns>
        public string GetCookieKV(string keyname)
        {
            _theCookie = GetCookieReq();
            if (_theCookie == null)
            {
                return string.Empty;
            }
            string result=AllCommon.Decrypt(HttpUtility.HtmlDecode(_theCookie.Values[keyname]));
            if (result.Length > 0)
            {
                HttpCookie serverCookie = GetCookieResponse();
                
            }
            return result;
        }
        /// <summary>
        /// 清除對應的cookie
        /// </summary>
        public void clearCookie()
        {
            HttpCookie serverCookie = GetCookieResponse();
            if (serverCookie != null)
            {
                serverCookie.Expires = DateTime.Now.AddDays(-1.0d);
            }
        }
    }

  

过好自己的编程人生,一步一步向架构师迈进
posted on 2011-10-11 11:19  陈适珍  阅读(469)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3