From 25dc8c13144cc891bbc467fefb8b2dac1d0c8dd1 Mon Sep 17 00:00:00 2001
From: chenhaozhe <cgz@hz-kingdee.com>
Date: 星期五, 27 三月 2026 09:28:44 +0800
Subject: [PATCH] 调整 JWT 鉴权策略,使用在控制器和方法上添加标签的方式来鉴权

---
 WebAPI/Utility/JWTHelper.cs |   39 +++++++++++++++++++++++++++++++++++----
 1 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/WebAPI/Utility/JWTHelper.cs b/WebAPI/Utility/JWTHelper.cs
index 824a5b9..5633ce8 100644
--- a/WebAPI/Utility/JWTHelper.cs
+++ b/WebAPI/Utility/JWTHelper.cs
@@ -22,12 +22,12 @@
         new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecretKey));
 
         // 绛惧彂 Token
-        public static string GenerateToken(string userId, string userName, string HCampanyName)
+        public static string GenerateToken(string userId, string userName, string HCampanyName= "zjzyms")
         {
             var claims = new[]
             {
-            new Claim(ClaimTypes.NameIdentifier, userId),
-            new Claim(ClaimTypes.Name, userName),
+            new Claim(ClaimTypes.NameIdentifier, userId), // 缂栫爜
+            new Claim(ClaimTypes.Name, userName), // 鐢ㄦ埛id
             new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
         };
 
@@ -45,7 +45,7 @@
         }
 
         // 楠岃瘉 Token 骞惰繑鍥� ClaimsPrincipal
-        public static ClaimsPrincipal ValidateToken(string token, string HCampanyName)
+        public static ClaimsPrincipal ValidateToken(string token, string HCampanyName= "zjzyms")
         {
             var handler = new JwtSecurityTokenHandler();
 
@@ -75,5 +75,36 @@
                 return null;
             }
         }
+
+        // 鍒锋柊Token
+        public static string refreshToken(string token)
+        {
+            var jwt = new JwtSecurityTokenHandler().ReadJwtToken(token);
+            var czybm = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value;
+            var zymm = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name)?.Value;
+            // 閫氳繃涓婁竴涓猼oken鐨勫�煎埛鏂皌oken
+            return GenerateToken(czybm, zymm);
+        }
+
+        // 鍒ゆ柇Token 鏄惁鍗冲皢杩囨湡
+        public static bool TokenAboutToExpire(string token)
+        {
+            var jwt = new JwtSecurityTokenHandler().ReadJwtToken(token);
+            var validTo = jwt.ValidTo;
+
+            if(validTo.Subtract(DateTime.UtcNow).TotalMinutes < 5)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        public static String getUserName(string token)
+        {
+            var jwt = new JwtSecurityTokenHandler().ReadJwtToken(token);
+            var userName = jwt.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name)?.Value;
+            // 閫氳繃涓婁竴涓猼oken鐨勫�煎埛鏂皌oken
+            return userName;
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1