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