商城手机版

CookieUtil.cs 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6. using System.Web;
  7. namespace ShopMobile.Common
  8. {
  9. /// <summary>
  10. /// 对cookie的操作(带壳版)
  11. /// </summary>
  12. /// <remarks>
  13. /// 带壳版的意思是之前ASP支持的那种二维cookie,cookie[][],
  14. /// 动用的是cookie.values,原版是cookie.value.
  15. /// 并且直接DES加密
  16. /// </remarks>
  17. public class CookieUtil
  18. {
  19. [DebuggerStepThrough]
  20. public static void SetCookie(string name, Dictionary<string, string> values)
  21. {
  22. SetCookie(name, values, null, null);
  23. }
  24. [DebuggerStepThrough]
  25. public static void SetCookie(string name, Dictionary<string, string> values, string domain)
  26. {
  27. SetCookie(name, values, domain, null);
  28. }
  29. [DebuggerStepThrough]
  30. public static void SetCookie(string name, Dictionary<string, string> values, DateTime expires)
  31. {
  32. SetCookie(name, values, null, expires);
  33. }
  34. [DebuggerStepThrough]
  35. public static void SetCookie(string name, Dictionary<string, string> values, string domain, DateTime? expires)
  36. {
  37. HttpCookie cookie = new HttpCookie(name);
  38. foreach (string k in values.Keys)
  39. {
  40. cookie.Values.Add(k, HttpUtility.UrlEncode(DESEncrypt.Encrypt(values[k]), Encoding.UTF8));
  41. }
  42. if (expires != null)
  43. {
  44. cookie.Expires = (DateTime)expires;
  45. }
  46. if (!string.IsNullOrEmpty(domain)) cookie.Domain = domain;
  47. cookie.HttpOnly = true;
  48. HttpContext context = HttpContext.Current;
  49. context.Response.Cookies.Add(cookie);
  50. }
  51. /// <summary>
  52. /// 获取cookie(已解密)
  53. /// </summary>
  54. /// <param name="name"></param>
  55. /// <param name="key"></param>
  56. /// <returns></returns>
  57. [DebuggerStepThrough]
  58. public static string GetCookie(string name, string key)
  59. {
  60. if (HttpContext.Current == null)
  61. {
  62. return null;
  63. }
  64. string valu = "";
  65. HttpContext context = HttpContext.Current;
  66. HttpCookie cookie = context.Request.Cookies[name];
  67. if (cookie != null)
  68. {
  69. valu = DESEncrypt.Decrypt(HttpUtility.UrlDecode(cookie.Values[key], Encoding.UTF8));
  70. }
  71. return valu;
  72. }
  73. [DebuggerStepThrough]
  74. public static void RemoveCookie(string name)
  75. {
  76. SetCookie(name, new Dictionary<string, string>(), "", DateTime.Now.AddDays(-1));
  77. }
  78. /// <summary>
  79. /// 将要删除的二维Cookie,写成Dictionary形式传入
  80. /// </summary>
  81. /// <param name="name"></param>
  82. /// <param name="values"></param>
  83. /// <remarks>没有基于SetCookie方法</remarks>
  84. public static void RemoveCookie(string name, List<string> values)
  85. {
  86. HttpContext context = HttpContext.Current;
  87. HttpCookie cookie = context.Request.Cookies[name];
  88. List<string> cookiekeys = Utils.StrArrayToList(cookie.Values.AllKeys);
  89. foreach (string k in values)
  90. {
  91. //if (cookiekeys.Contains(k))
  92. cookie.Values.Remove(k);
  93. }
  94. context.Response.Cookies.Add(cookie);
  95. }
  96. /// <summary>
  97. /// 清楚所有cookie
  98. /// </summary>
  99. public static void RemoveAllCookies()
  100. {
  101. HttpContext context = HttpContext.Current;
  102. foreach (string cookieKey in context.Request.Cookies.AllKeys)
  103. {
  104. context.Response.Cookies[cookieKey].Expires = DateTime.Now.AddDays(-1);
  105. }
  106. }
  107. /// <summary>
  108. /// 修改cookie,将要修改的二维Cookie,写成Dictionary形式传入
  109. /// </summary>
  110. /// <param name="name"></param>
  111. /// <param name="values"></param>
  112. /// <remarks>没有基于SetCookie方法</remarks>
  113. public static void UpdateCookie(string name, Dictionary<string, string> values)
  114. {
  115. HttpContext context = HttpContext.Current;
  116. HttpCookie cookie = context.Request.Cookies[name];
  117. List<string> cookiekeys = Utils.StrArrayToList(cookie.Values.AllKeys);
  118. foreach (string k in values.Keys)
  119. {
  120. //if (cookiekeys.Contains(k))
  121. cookie.Values[k] = HttpUtility.UrlEncode(DESEncrypt.Encrypt(values[k]), Encoding.UTF8);
  122. }
  123. context.Response.Cookies.Add(cookie);
  124. }
  125. }
  126. }