From d85a4b97325020b7efe1a6cdbd55025c6408cec9 Mon Sep 17 00:00:00 2001 From: hutongqing <hutongqing@hnkhzn.com> Date: 星期五, 25 十月 2024 10:12:06 +0800 Subject: [PATCH] 更新 --- WIDESEAWCS_Server/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 52 insertions(+), 5 deletions(-) diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs b/WIDESEAWCS_Server/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs index e91a216..3c9aaeb 100644 --- a/WIDESEAWCS_Server/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs +++ b/WIDESEAWCS_Server/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs @@ -9,8 +9,10 @@ using System.Security.Claims; using System.Text; using System.Threading.Tasks; +using WIDESEAWCS_Core.Authorization; using WIDESEAWCS_Core.Const; using WIDESEAWCS_Core.DB; +using WIDESEAWCS_Core.Extensions; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.Seed; using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; @@ -49,9 +51,39 @@ public string GetToken() { - string token = _cacheService.Get(UserId.ToString()); + string token = _accessor.HttpContext?.Request?.Headers["Authorization"].ObjToString().Replace("Bearer ", "") ?? ""; + if (!token.IsNullOrEmpty()) + { + return token; + } + if (_accessor.HttpContext?.IsSuccessSwagger() == true) + { + token = _accessor.HttpContext.GetSuccessSwaggerJwt(); + if (token.IsNotEmptyOrNull()) + { + //UserInfo userInfo = JwtHelper.SerializeJwt(token); + //if (userInfo.UserId > 0) + //{ + // return token; + //} + List<Claim> claims1 = _accessor.HttpContext.User.Claims.ToList(); + if (_accessor.HttpContext.User.Claims.Any(s => s.Type == JwtRegisteredClaimNames.Jti)) + { + return token; + } + + var claims = new ClaimsIdentity(GetClaimsIdentity(token)); + _accessor.HttpContext.User.AddIdentity(claims); + return token; + } + } + token = _cacheService.Get(UserId.ToString()); if (!string.IsNullOrEmpty(token)) { return token; } - return string.Empty; + return token; + + // string token = _cacheService.Get(UserId.ToString()); + //if (!string.IsNullOrEmpty(token)) { return token; } + //return string.Empty; //return _accessor.HttpContext?.Request?.Headers["Authorization"].ObjToString().Replace("Bearer ", "") ?? ""; } @@ -73,9 +105,10 @@ { JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(token); - return (from item in jwtToken.Claims - where item.Type == ClaimType - select item.Value).ToList(); + List<string> items = (from item in jwtToken.Claims + where item.Type == ClaimType + select item.Value).ToList(); + return items; } return new List<string>() { }; @@ -97,6 +130,20 @@ return ArraySegment<Claim>.Empty; } + public IEnumerable<Claim> GetClaimsIdentity(string token) + { + var jwtHandler = new JwtSecurityTokenHandler(); + // token鏍¢獙 + if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token)) + { + var jwtToken = jwtHandler.ReadJwtToken(token); + + return jwtToken.Claims; + } + + return new List<Claim>(); + } + public List<string> GetClaimValueByType(string ClaimType) { return (from item in GetClaimsIdentity() -- Gitblit v1.9.3