HttpContextHelper.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.Extensions.Primitives;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Security.Claims;
  7. using TEAMModelOS.SDK.Context.Constant.Common;
  8. using TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper;
  9. using TEAMModelOS.SDK.Extension.JwtAuth.Models;
  10. namespace TEAMModelOS.SDK.Helper.Network.HttpHelper
  11. {
  12. public static class HttpContextHelper
  13. {
  14. /// <summary>
  15. /// 设置本地cookie
  16. /// </summary>
  17. /// <param name="key">键</param>
  18. /// <param name="value">值</param>
  19. /// <param name="minutes">过期时长,单位:分钟</param>
  20. public static void SetCookies(HttpResponse Response, string key, string value, int minutes = 30)
  21. {
  22. Response.Cookies.Append(key, value, new CookieOptions
  23. {
  24. Expires = DateTime.Now.AddMinutes(minutes)
  25. });
  26. }
  27. /// <summary>
  28. /// 删除指定的cookie
  29. /// </summary>
  30. /// <param name="key">键</param>
  31. public static void DeleteCookies(HttpContext httpContext, string key)
  32. {
  33. httpContext.Response.Cookies.Delete(key);
  34. }
  35. /// <summary>
  36. /// 在Http中获取值
  37. /// </summary>
  38. /// <param name="key">键</param>
  39. /// <returns>返回对应的值</returns>
  40. public static string GetValueInHttp(HttpRequest Request, string key)
  41. {
  42. string aktoken = "";
  43. if (string.IsNullOrEmpty(aktoken))
  44. {
  45. //或者在头获取
  46. Request.Headers.TryGetValue(key, out StringValues akh);
  47. if (!string.IsNullOrEmpty(akh))
  48. {
  49. aktoken = akh;
  50. }
  51. }
  52. if (string.IsNullOrEmpty(aktoken))
  53. {
  54. //其次在参数中获取
  55. Request.Query.TryGetValue(key, out StringValues ak);
  56. if (!string.IsNullOrEmpty(ak))
  57. {
  58. aktoken = ak;
  59. }
  60. }
  61. //从cookie获取
  62. if (string.IsNullOrEmpty(aktoken))
  63. {
  64. Request.Cookies.TryGetValue(key, out string value);
  65. if (!string.IsNullOrEmpty(value))
  66. {
  67. aktoken = value;
  68. }
  69. }
  70. if (string.IsNullOrEmpty(aktoken))
  71. {
  72. //在referer获取
  73. Request.Headers.TryGetValue("referer", out StringValues referer);
  74. string token = "";
  75. if (referer.Contains(key + "="))
  76. {
  77. string[] pramas = referer[0].Substring(referer[0].IndexOf(key + "=")).Split("&");
  78. int len = pramas.Count();
  79. if (len > 0)
  80. {
  81. for (int i = 0; i < len; i++)
  82. {
  83. if (pramas[i].Contains(key))
  84. {
  85. token = pramas[i].Split("=")[1];
  86. break;
  87. }
  88. }
  89. }
  90. }
  91. if (!string.IsNullOrEmpty(token))
  92. {
  93. aktoken = token;
  94. }
  95. }
  96. return aktoken;
  97. }
  98. public static List<string> GetLoginUser(IHttpContextAccessor httpContextAccessor ,string claimType) {
  99. var tokenHeader = "";
  100. HttpRequest request = httpContextAccessor.HttpContext.Request;
  101. if (request.Headers.ContainsKey(Constants.AUTHORIZATION))
  102. {
  103. tokenHeader = request.Headers[Constants.AUTHORIZATION];
  104. //tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
  105. tokenHeader = tokenHeader.Replace("Bearer ", "");
  106. }
  107. if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
  108. {
  109. tokenHeader = request.Query[Constants.ACCESS_TOKEN];
  110. //tokenHeader = tokenHeader;
  111. }
  112. if (string.IsNullOrEmpty(tokenHeader))
  113. {
  114. return null;
  115. }
  116. ClaimModel claimModel = JwtHelper.SerializeJWT(tokenHeader);
  117. claimModel.Claim.TryGetValue(claimType, out var claimValue);
  118. List<string> claimValues = new List<string>();
  119. foreach (Claim claim in claimModel.Claims)
  120. {
  121. if (claim.Type.Equals(claimType))
  122. {
  123. claimValues.Add(claim.Value);
  124. }
  125. }
  126. return claimValues;
  127. }
  128. public static string GetAuthorizationCode(IHttpContextAccessor httpContextAccessor)
  129. {
  130. var tokenHeader = "";
  131. HttpRequest request = httpContextAccessor.HttpContext.Request;
  132. if (request.Headers.ContainsKey(Constants.AUTHORIZATION))
  133. {
  134. tokenHeader = request.Headers[Constants.AUTHORIZATION];
  135. //tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim();
  136. tokenHeader = tokenHeader.Replace("Bearer ", "");
  137. }
  138. if (request.Query.ContainsKey(Constants.ACCESS_TOKEN))
  139. {
  140. tokenHeader = request.Query[Constants.ACCESS_TOKEN];
  141. tokenHeader = tokenHeader.Trim();
  142. }
  143. return tokenHeader;
  144. }
  145. }
  146. }