using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Primitives; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using TEAMModelOS.SDK.Context.Constant.Common; using TEAMModelOS.SDK.Extension.JwtAuth.JwtHelper; using TEAMModelOS.SDK.Extension.JwtAuth.Models; namespace TEAMModelOS.SDK.Helper.Network.HttpHelper { public static class HttpContextHelper { /// /// 设置本地cookie /// /// 键 /// 值 /// 过期时长,单位:分钟 public static void SetCookies(HttpResponse Response, string key, string value, int minutes = 30) { Response.Cookies.Append(key, value, new CookieOptions { Expires = DateTime.Now.AddMinutes(minutes) }); } /// /// 删除指定的cookie /// /// 键 public static void DeleteCookies(HttpContext httpContext, string key) { httpContext.Response.Cookies.Delete(key); } /// /// 在Http中获取值 /// /// 键 /// 返回对应的值 public static string GetValueInHttp(HttpRequest Request, string key) { string aktoken = ""; if (string.IsNullOrEmpty(aktoken)) { //或者在头获取 Request.Headers.TryGetValue(key, out StringValues akh); if (!string.IsNullOrEmpty(akh)) { aktoken = akh; } } if (string.IsNullOrEmpty(aktoken)) { //其次在参数中获取 Request.Query.TryGetValue(key, out StringValues ak); if (!string.IsNullOrEmpty(ak)) { aktoken = ak; } } //从cookie获取 if (string.IsNullOrEmpty(aktoken)) { Request.Cookies.TryGetValue(key, out string value); if (!string.IsNullOrEmpty(value)) { aktoken = value; } } if (string.IsNullOrEmpty(aktoken)) { //在referer获取 Request.Headers.TryGetValue("referer", out StringValues referer); string token = ""; if (referer.Contains(key + "=")) { string[] pramas = referer[0].Substring(referer[0].IndexOf(key + "=")).Split("&"); int len = pramas.Count(); if (len > 0) { for (int i = 0; i < len; i++) { if (pramas[i].Contains(key)) { token = pramas[i].Split("=")[1]; break; } } } } if (!string.IsNullOrEmpty(token)) { aktoken = token; } } return aktoken; } public static string GetLoginUser(IHttpContextAccessor httpContextAccessor) { var tokenHeader = ""; HttpRequest request = httpContextAccessor.HttpContext.Request; if (request.Query.ContainsKey(Constants.ACCESS_TOKEN)) { tokenHeader = request.Query[Constants.ACCESS_TOKEN]; tokenHeader = tokenHeader.ToString().Trim(); } if (request.Headers.ContainsKey(Constants.AUTHORIZATION)) { tokenHeader = request.Headers[Constants.AUTHORIZATION]; tokenHeader = tokenHeader.ToString().Substring("Bearer ".Length).Trim(); } ClaimModel claimModel = JwtHelper.SerializeJWT(tokenHeader); List claims = claimModel.Claims; //foreach() return null; } } }