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