Cookie

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Application.Common
{
    public class CookieHelper
    {
        public enum TimeUtil
        {
            /// <summary>
            /// 以年为过期单位
            /// </summary>
            Y = 0,
            /// <summary>
            /// 以月为过期单位
            /// </summary>
            M = 1,
            /// <summary>
            /// 以天为过期单位
            /// </summary>
            D = 2,
            /// <summary>
            /// 以小时为过期单位
            /// </summary>
            H = 3,
            /// <summary>
            /// 以分钟为过期单位
            /// </summary>
            mi = 4,
            /// <summary>
            /// 以秒为过期单位
            /// </summary>
            s = 5,
            /// <summary>
            /// 以默认一个月为过期单位
            /// </summary>
            None
        }

        #region 设置客户端Cookie值
        /// <summary>
        /// 设置客户端Cookie值
        /// </summary>
        /// <param name="_name">Cookie名称</param>
        /// <param name="_value">Cookie值</param>
        public static void SetCookie(string _name, string _value)
        {
            SetCookie(_name, _value, TimeUtil.None, string.Empty, string.Empty, false, string.Empty, false);
        }
        /// <summary>
        /// 设置客户端Cookie值
        /// </summary>
        /// <param name="_name">Cookie名称</param>
        /// <param name="_value">Cookie值</param>
        /// <param name="_expireTimeUtil">过期时间单位</param>
        /// <param name="_expireTimeSpan">过期时间间隔</param>
        public static void SetCookie(string _name, string _value, TimeUtil _expireTimeUtil, string _expireTimeSpan)
        {
            SetCookie(_name, _value, _expireTimeUtil, _expireTimeSpan, string.Empty, false, string.Empty, false);
        }
        /// <summary>
        /// 设置客户端Cookie值
        /// </summary>
        /// <param name="_name">Cookie名称</param>
        /// <param name="_value">Cookie值</param>
        /// <param name="_expireTimeUtil">过期时间单位</param>
        /// <param name="_expireTimeSpan">过期时间间隔</param>
        /// <param name="_domain">设置将此 Cookie 与其关联的域</param>
        /// <param name="_httpOnly">指定 Cookie 是否可通过客户端脚本访问,默认为false</param>
        /// <param name="_path">要与当前 Cookie 一起传输的虚拟路径,默认值为当前请求的路径</param>
        /// <param name="_secure">指示是否使用安全套接字层 (SSL)(即仅通过 HTTPS)传输 Cookie,默认为false</param>
        public static void SetCookie(string _name, string _value, TimeUtil _expireTimeUtil, string _expireTimeSpan, string _domain, bool _httpOnly, string _path, bool _secure)
        {
            SetCookie(_name, _value, GetExpireTime(_expireTimeUtil, _expireTimeSpan), _domain, _httpOnly, _path, _secure);
        }

        /// <summary>
        /// 设置客户端Cookie值
        /// </summary>
        /// <param name="_name">Cookie名称</param>
        /// <param name="_value">Cookie值</param>
        /// <param name="_expireTime">过期时间</param>
        /// <param name="_domain">设置将此 Cookie 与其关联的域</param>
        /// <param name="_httpOnly">指定 Cookie 是否可通过客户端脚本访问,默认为false</param>
        /// <param name="_path">要与当前 Cookie 一起传输的虚拟路径,默认值为当前请求的路径</param>
        /// <param name="_secure">指示是否使用安全套接字层 (SSL)(即仅通过 HTTPS)传输 Cookie,默认为false</param>
        public static void SetCookie(string _name, string _value, DateTime _expireTime, string _domain, bool _httpOnly, string _path, bool _secure)
        {
            _value = System.Web.HttpUtility.UrlEncode(_value);
            HttpCookie _cookie = new HttpCookie(_name);
            _cookie.Value = _value;
            if (!string.IsNullOrEmpty(_domain))
                _cookie.Domain = _domain;
            _cookie.Expires = _expireTime;
            _cookie.HttpOnly = _httpOnly;
            if (!string.IsNullOrEmpty(_path))
                _cookie.Path = _path;
            _cookie.Secure = _secure;
            HttpContext.Current.Response.Cookies.Add(_cookie);
        }
        public static DateTime GetExpireTime(TimeUtil _expireTimeUtil, string _expireTimeSpan)
        {
            DateTime _dateTime = DateTime.Now.AddMonths(1);
            if (!string.IsNullOrEmpty(_expireTimeSpan))
            {
                switch (_expireTimeUtil)
                {
                    case TimeUtil.Y:
                        _dateTime = DateTime.Now.AddYears(int.Parse(_expireTimeSpan));
                        break;
                    case TimeUtil.M:
                        _dateTime = DateTime.Now.AddMonths(int.Parse(_expireTimeSpan));
                        break;
                    case TimeUtil.D:
                        _dateTime = DateTime.Now.AddDays(int.Parse(_expireTimeSpan));
                        break;
                    case TimeUtil.H:
                        _dateTime = DateTime.Now.AddHours(int.Parse(_expireTimeSpan));
                        break;
                    case TimeUtil.mi:
                        _dateTime = DateTime.Now.AddMinutes(int.Parse(_expireTimeSpan));
                        break;
                    case TimeUtil.s:
                        _dateTime = DateTime.Now.AddSeconds(int.Parse(_expireTimeSpan));
                        break;
                    case TimeUtil.None:
                    default:
                        _dateTime = DateTime.Now.AddMonths(1);
                        break;
                }
            }
            return _dateTime;
        }
        #endregion

        #region 获取Cookie值
        public static string GetCookie(string _name)
        {
            if (HttpContext.Current.Request.Cookies[_name] != null && !string.IsNullOrEmpty(HttpContext.Current.Request.Cookies[_name].Value))
            {
                return System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies[_name].Value);
            }
            else
                return string.Empty;
        }
        #endregion

        #region 删除Cookie值
        public static void DelCookie(string strCookieName)
        {
            DelCookie(strCookieName, string.Empty);
        }
        /// <summary>
        /// 删除Cookie
        /// </summary>
        /// <param name="strCookieName">CookieName</param>
        /// <param name="strDomain">Domain</param>
        public static void DelCookie(string strCookieName, string strDomain)
        {
            HttpCookie objCookie = new HttpCookie(strCookieName.Trim());
            if (!string.IsNullOrEmpty(strDomain))
            {
                objCookie.Domain = strDomain;
            }
            objCookie.Expires = DateTime.Now.AddYears(-1);
            HttpContext.Current.Response.Cookies.Add(objCookie);
        }
        #endregion

    }
}

 

posted @ 2017-05-13 10:11  冫凌晨  阅读(189)  评论(0编辑  收藏  举报