From 7cd937518fb2114372ee3a177fafe4af0f74280a Mon Sep 17 00:00:00 2001 From: hjhan Date: Mon, 27 Apr 2026 15:34:12 +0800 Subject: [PATCH] =?UTF-8?q?refactor(auth):=20=E4=BC=98=E5=8C=96JWT?= =?UTF-8?q?=E4=BB=A4=E7=89=8C=E5=88=9B=E5=BB=BA=E6=96=B9=E6=B3=95=20-=20?= =?UTF-8?q?=E7=A7=BB=E9=99=A4CreateJwtToken2=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8CreateJwtToken=E6=96=B9?= =?UTF-8?q?=E6=B3=95=20-=20=E4=BF=AE=E6=94=B9=E5=AF=86=E9=92=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=96=B9=E5=BC=8F=EF=BC=8C=E4=BB=8EASCII=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E6=94=B9=E4=B8=BABase64=E8=A7=A3=E7=A0=81=20?= =?UTF-8?q?-=20=E5=88=A0=E9=99=A4IssuedAt=E5=A3=B0=E6=98=8E=E4=BB=A5?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BB=A4=E7=89=8C=E7=BB=93=E6=9E=84=20-=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=80=E6=9C=89=E7=9B=B8=E5=85=B3=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E7=82=B9=E4=BD=BF=E7=94=A8=E7=BB=9F=E4=B8=80=E7=9A=84?= =?UTF-8?q?=E4=BB=A4=E7=89=8C=E5=88=9B=E5=BB=BA=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UnitTestProject/BasicTests/AuthHelperTest.cs | 2 +- YLErpDAL/Helpers/AuthHelper.cs | 32 ------------------- YLErpWeb/Controllers/AccountController.cs | 2 +- YLErpWeb/Middleware/RefreshTokenMiddleware.cs | 2 +- 4 files changed, 3 insertions(+), 35 deletions(-) diff --git a/UnitTestProject/BasicTests/AuthHelperTest.cs b/UnitTestProject/BasicTests/AuthHelperTest.cs index c52f3299..74b778c3 100644 --- a/UnitTestProject/BasicTests/AuthHelperTest.cs +++ b/UnitTestProject/BasicTests/AuthHelperTest.cs @@ -21,7 +21,7 @@ namespace YLErp.BasicTests public void TestGenerateToken() { var identity = UserManager.CreateIdentity("1", "superA", Guid.NewGuid().ToString("")); - var jwtToken2 = AuthHelper.CreateJwtToken2(identity); + var jwtToken2 = AuthHelper.CreateJwtToken(identity); var jwtTokenHandler = new JwtSecurityTokenHandler(); var token = jwtTokenHandler.ReadJwtToken(jwtToken2); Assert.Fail(); diff --git a/YLErpDAL/Helpers/AuthHelper.cs b/YLErpDAL/Helpers/AuthHelper.cs index d31b636f..947e3246 100644 --- a/YLErpDAL/Helpers/AuthHelper.cs +++ b/YLErpDAL/Helpers/AuthHelper.cs @@ -29,41 +29,10 @@ namespace YLErp.Helpers public const string JwtUserToken = "###jwt###"; - /// - /// 创建jwt令牌 - /// public static string CreateJwtToken(ClaimsIdentity identity) - { - var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(JwtSecretKey)); - - // 添加 JTI (JWT ID) 用于黑名单机制 - var claims = new ClaimsIdentity(identity); - if (!claims.HasClaim(c => c.Type == "jti")) - { - claims.AddClaim(new Claim("jti", Guid.NewGuid().ToString("N"))); - } - - var tokenDescriptor = new SecurityTokenDescriptor - { - Subject = claims, - Expires = DateTime.UtcNow.AddSeconds(ExpireInSeconds), - Issuer = JwtIssuer, - Audience = JwtAudience, - SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature) - }; - - var tokenHandler = new JwtSecurityTokenHandler(); - - var token = tokenHandler.CreateToken(tokenDescriptor); - - return tokenHandler.WriteToken(token); - } - - public static string CreateJwtToken2(ClaimsIdentity identity) { var key = new SymmetricSecurityKey(Convert.FromBase64String(JwtSecretKey)); - // 添加 JTI (JWT ID) 用于黑名单机制 var claims = new ClaimsIdentity(identity); if (!claims.HasClaim(c => c.Type == "jti")) { @@ -74,7 +43,6 @@ namespace YLErp.Helpers { Subject = claims, Expires = DateTime.UtcNow.AddSeconds(ExpireInSeconds), - IssuedAt = DateTime.Now, Issuer = JwtIssuer, Audience = JwtAudience, SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512) diff --git a/YLErpWeb/Controllers/AccountController.cs b/YLErpWeb/Controllers/AccountController.cs index 79c0d3e6..3efa8a20 100644 --- a/YLErpWeb/Controllers/AccountController.cs +++ b/YLErpWeb/Controllers/AccountController.cs @@ -264,7 +264,7 @@ namespace YLErp.Web.Controllers Response.Cookies.Delete("Access-Token"); Response.Cookies.Delete("Access-Token-Encrypt"); - var jwtToken = AuthHelper.CreateJwtToken2(identity); + var jwtToken = AuthHelper.CreateJwtToken(identity); Response.Cookies.Append("Access-Token", jwtToken, new CookieOptions { MaxAge = TimeSpan.FromSeconds(AuthHelper.ExpireInSeconds) diff --git a/YLErpWeb/Middleware/RefreshTokenMiddleware.cs b/YLErpWeb/Middleware/RefreshTokenMiddleware.cs index a0d9f55c..02c86b21 100644 --- a/YLErpWeb/Middleware/RefreshTokenMiddleware.cs +++ b/YLErpWeb/Middleware/RefreshTokenMiddleware.cs @@ -134,7 +134,7 @@ namespace YLErp.Web.Middleware var identity = UserManager.CreateIdentity(userId, userName, userToken); // 生成新的token - var newToken = AuthHelper.CreateJwtToken2(identity); + var newToken = AuthHelper.CreateJwtToken(identity); // 更新cookie context.Response.Cookies.Append("Access-Token", newToken, new CookieOptions