From 437b23022c9909090a3f1bfaa72f4de3504b69e0 Mon Sep 17 00:00:00 2001 From: suyiiyii Date: Sun, 25 Aug 2024 19:12:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(JwtInterceptor):=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=BF=87=E6=9C=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加对过期JWT令牌的异常处理,以在访问受限时强制重新认证。在验证失败时抛出服务异常前,捕获并处理TokenExpiredException。 --- .../java/top/suyiiyii/sims/common/JwtInterceptor.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java b/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java index e7333ac..63b0254 100644 --- a/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java +++ b/src/main/java/top/suyiiyii/sims/common/JwtInterceptor.java @@ -1,5 +1,6 @@ package top.suyiiyii.sims.common; +import com.auth0.jwt.exceptions.TokenExpiredException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; @@ -41,10 +42,13 @@ public class JwtInterceptor implements HandlerInterceptor { return true; } // 验证 token 的有效性 - if (!JwtUtils.verifyToken(token, secret) || JwtUtils.extractUserId(token) == null) { + try { + if (!JwtUtils.verifyToken(token, secret) || JwtUtils.extractUserId(token) == null) { + throw new ServiceException("401", "登录已过期,请重新登录"); + } + } catch (TokenExpiredException e) { throw new ServiceException("401", "登录已过期,请重新登录"); } - // 获取 token 中的 user id Integer userId = Integer.parseInt(Objects.requireNonNull(JwtUtils.extractUserId(token)));