fix(auth): 修复JWT令牌登出和刷新中间件问题

- 调整登出流程,先将JWT令牌加入黑名单再删除Cookie
- 在HttpHelper中添加空响应检查,防止接口返回空内容时出错
- 在配额监控服务中增加底层白名单检查的日志记录
- 优化刷新令牌中间件,跳过登录相关页面和静态资源的令牌检查
- 改进令牌失效响应,设置正确的Content-Type并提供多语言提示信息
This commit is contained in:
hjhan
2026-03-24 13:04:17 +08:00
parent d93359d76e
commit 9bbd512707
4 changed files with 37 additions and 8 deletions
+8 -7
View File
@@ -311,13 +311,9 @@ namespace YLErp.Web.Controllers
HttpContext.SignOutAsync(IdentityConstants.ApplicationScheme);
logger.Info($"[退出登录] SignOutAsync 已调用");
// 清除 JWT Token Cookie
Response.Cookies.Delete("Access-Token");
Response.Cookies.Delete("Access-Token-Encrypt");
logger.Info($"[退出登录] JWT Token Cookie 已清除");
// 将当前 JWT Token 加入黑名单(使其立即失效)
if (Request.Cookies.TryGetValue("Access-Token", out var accessToken) && !string.IsNullOrEmpty(accessToken))
// 先将当前 JWT Token 加入黑名单(使其立即失效),然后再删除 Cookie
string accessToken = null;
if (Request.Cookies.TryGetValue("Access-Token", out accessToken) && !string.IsNullOrEmpty(accessToken))
{
try
{
@@ -340,6 +336,11 @@ namespace YLErp.Web.Controllers
}
}
// 清除 JWT Token Cookie(在加入黑名单之后)
Response.Cookies.Delete("Access-Token");
Response.Cookies.Delete("Access-Token-Encrypt");
logger.Info($"[退出登录] JWT Token Cookie 已清除");
if (SsoLoginConfig.SSO_Enable)
{
switch (loginName?.ToLowerInvariant())