HttpContextHelper.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.Extensions.Primitives;
  3. using System;
  4. using System.Linq;
  5. namespace TEAMModelOS.SDK.Helper.Network.HttpHelper
  6. {
  7. public static class HttpContextHelper
  8. {
  9. /// <summary>
  10. /// 设置本地cookie
  11. /// </summary>
  12. /// <param name="key">键</param>
  13. /// <param name="value">值</param>
  14. /// <param name="minutes">过期时长,单位:分钟</param>
  15. public static void SetCookies(HttpResponse Response, string key, string value, int minutes = 30)
  16. {
  17. Response.Cookies.Append(key, value, new CookieOptions
  18. {
  19. Expires = DateTime.Now.AddMinutes(minutes)
  20. });
  21. }
  22. /// <summary>
  23. /// 删除指定的cookie
  24. /// </summary>
  25. /// <param name="key">键</param>
  26. public static void DeleteCookies(HttpContext httpContext, string key)
  27. {
  28. httpContext.Response.Cookies.Delete(key);
  29. }
  30. /// <summary>
  31. /// 在Http中获取值
  32. /// </summary>
  33. /// <param name="key">键</param>
  34. /// <returns>返回对应的值</returns>
  35. public static string GetValueInHttp(HttpRequest Request, string key)
  36. {
  37. string aktoken = "";
  38. if (string.IsNullOrEmpty(aktoken))
  39. {
  40. //或者在头获取
  41. Request.Headers.TryGetValue(key, out StringValues akh);
  42. if (!string.IsNullOrEmpty(akh))
  43. {
  44. aktoken = akh;
  45. }
  46. }
  47. if (string.IsNullOrEmpty(aktoken))
  48. {
  49. //其次在参数中获取
  50. Request.Query.TryGetValue(key, out StringValues ak);
  51. if (!string.IsNullOrEmpty(ak))
  52. {
  53. aktoken = ak;
  54. }
  55. }
  56. //从cookie获取
  57. if (string.IsNullOrEmpty(aktoken))
  58. {
  59. Request.Cookies.TryGetValue(key, out string value);
  60. if (!string.IsNullOrEmpty(value))
  61. {
  62. aktoken = value;
  63. }
  64. }
  65. if (string.IsNullOrEmpty(aktoken))
  66. {
  67. //在referer获取
  68. Request.Headers.TryGetValue("referer", out StringValues referer);
  69. string token = "";
  70. if (referer.Contains(key + "="))
  71. {
  72. string[] pramas = referer[0].Substring(referer[0].IndexOf(key + "=")).Split("&");
  73. int len = pramas.Count();
  74. if (len > 0)
  75. {
  76. for (int i = 0; i < len; i++)
  77. {
  78. if (pramas[i].Contains(key))
  79. {
  80. token = pramas[i].Split("=")[1];
  81. break;
  82. }
  83. }
  84. }
  85. }
  86. if (!string.IsNullOrEmpty(token))
  87. {
  88. aktoken = token;
  89. }
  90. }
  91. return aktoken;
  92. }
  93. }
  94. }