From bdfa249c2e651b81eef432bdc6c40426aab3081a Mon Sep 17 00:00:00 2001 From: xupei Date: Thu, 23 Jan 2025 14:15:12 +0800 Subject: [PATCH] =?UTF-8?q?token=E8=BF=87=E6=9C=9F=20=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/MissingTokenException.java | 19 ------------------- .../TokenMissingOrExpiredException.java | 12 ++++++++++++ .../security/filter/AuthenticationFilter.java | 13 ++++++++----- 3 files changed, 20 insertions(+), 24 deletions(-) delete mode 100644 src/main/java/com/ai/da/common/config/exception/MissingTokenException.java create mode 100644 src/main/java/com/ai/da/common/config/exception/TokenMissingOrExpiredException.java diff --git a/src/main/java/com/ai/da/common/config/exception/MissingTokenException.java b/src/main/java/com/ai/da/common/config/exception/MissingTokenException.java deleted file mode 100644 index 71cbfe3c..00000000 --- a/src/main/java/com/ai/da/common/config/exception/MissingTokenException.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ai.da.common.config.exception; - -import com.ai.da.common.response.ResultEnum; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Data -public class MissingTokenException extends RuntimeException { - - public MissingTokenException(String message) { - super(message); - } - - @Override - public Throwable fillInStackTrace() { - return this; - } -} diff --git a/src/main/java/com/ai/da/common/config/exception/TokenMissingOrExpiredException.java b/src/main/java/com/ai/da/common/config/exception/TokenMissingOrExpiredException.java new file mode 100644 index 00000000..5d47dc41 --- /dev/null +++ b/src/main/java/com/ai/da/common/config/exception/TokenMissingOrExpiredException.java @@ -0,0 +1,12 @@ +package com.ai.da.common.config.exception; + +public class TokenMissingOrExpiredException extends RuntimeException { + public TokenMissingOrExpiredException(String message) { + super(message); + } + + @Override + public Throwable fillInStackTrace() { + return this; + } +} diff --git a/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java b/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java index e26b267f..acd4b1be 100644 --- a/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java +++ b/src/main/java/com/ai/da/common/security/filter/AuthenticationFilter.java @@ -1,7 +1,7 @@ package com.ai.da.common.security.filter; import cn.hutool.core.util.StrUtil; -import com.ai.da.common.config.exception.MissingTokenException; +import com.ai.da.common.config.exception.TokenMissingOrExpiredException; import com.ai.da.common.context.UserContext; import com.ai.da.common.security.config.SecurityProperties; import com.ai.da.common.security.jwt.JWTTokenHelper; @@ -103,7 +103,7 @@ public class AuthenticationFilter extends OncePerRequestFilter { String ipAddress = RequestInfoUtil.getIpAddress(request); log.info("本次请求的ip为 : " + ipAddress); // throw new RuntimeException("请传入token!"); - throw new MissingTokenException("请传入token!"); + throw new TokenMissingOrExpiredException("请传入token!"); } if(jwtToken.equals("Bearer-eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIyIiwic3ViIjoie1wiaWRcIjoyLFwidXNlcm5hbWVcIjpcImxpcnNcIn0iLCJpYXQiOjE2NjU3NDEwODcsImlzcyI6IkRXSiIsImF1dGhvcml0aWVzIjoiW10iLCJleHAiOjE2NzQzODEwODd9.ShM9R_NNFD7oo1OvxrEgg7PFeWinOuAKkuInUCMQupp66s64Hhv8tN0Wwr83nIN4rHPqtn95wmd4msWcvaFYJA")){ //写死 暂时放行 @@ -114,7 +114,8 @@ public class AuthenticationFilter extends OncePerRequestFilter { if (validate) { AuthPrincipalVo principal = jwtTokenHelper.parserToUser(jwtToken); if (principal == null) { - throw new RuntimeException("TOKEN已过期,请重新登录!"); +// throw new RuntimeException("TOKEN已过期,请重新登录!"); + throw new TokenMissingOrExpiredException("TOKEN已过期,请重新登录!(token without userInfo)"); } //先清空当前线程变量,防止上一个线程遗留 UserContext.delete(); @@ -124,10 +125,12 @@ public class AuthenticationFilter extends OncePerRequestFilter { String cacheToken = LocalCacheUtils.getTokenCache(String.valueOf(principal.getId())); if(StringUtils.isEmpty(cacheToken)){ - throw new RuntimeException("TOKEN已过期,请重新登录!"); +// throw new RuntimeException("TOKEN已过期,请重新登录!"); + throw new TokenMissingOrExpiredException("TOKEN已过期,请重新登录!(local cache empty)"); } if(!cacheToken.equals(jwtToken) ){ - throw new RuntimeException("TOKEN已过期,请重新登录!"); +// throw new RuntimeException("TOKEN已过期,请重新登录!"); + throw new TokenMissingOrExpiredException("TOKEN已过期,请重新登录!(token not match local cache)"); } // UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(null, null); // SecurityContextHolder.getContext().setAuthentication(authentication);