From 27cbcd9f33bfe3760f98568be63fc0e273e35b56 Mon Sep 17 00:00:00 2001 From: panxuejie <15855548138@163.com> Date: Wed, 7 Jan 2026 17:34:56 +0800 Subject: [PATCH] =?UTF-8?q?jwt=E9=AA=8C=E8=AF=81=E5=85=BC=E5=AE=B9redis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/tacit/admin/config/SecurityConfig.java | 9 +++++++-- .../com/tacit/admin/service/impl/UserServiceImpl.java | 3 ++- .../java/com/tacit/app/config/AppSecurityConfig.java | 9 +++++++-- .../tacit/gateway/filter/JwtAuthenticationFilter.java | 4 ++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java b/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java index 4cda981..c2ee957 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java +++ b/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java @@ -3,6 +3,8 @@ package com.tacit.admin.config; import com.tacit.common.constant.CommonConstant; import com.tacit.common.utils.AesPasswordEncoder; import com.tacit.common.utils.JwtUtils; +import com.tacit.common.utils.RedisUtils; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -31,6 +33,9 @@ import java.util.Collections; @EnableMethodSecurity(prePostEnabled = true) @Slf4j public class SecurityConfig { + + @Resource + private RedisUtils redisUtils; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { @@ -58,8 +63,8 @@ public class SecurityConfig { if (authorization != null && authorization.startsWith(CommonConstant.JWT_PREFIX)) { String token = authorization.substring(CommonConstant.JWT_PREFIX.length()); try { - // 验证JWT令牌 - if (JwtUtils.validateToken(token)) { + // 验证JWT令牌和Redis中的令牌是否存在 + if (JwtUtils.validateToken(token) && redisUtils.hasKey(token)) { // 从令牌中获取用户信息 String username = JwtUtils.getUsernameFromToken(token); String role = JwtUtils.getRoleFromToken(token); diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java b/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java index 765d914..c1325e8 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java +++ b/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java @@ -29,7 +29,8 @@ public class UserServiceImpl extends ServiceImpl implements Us @Resource private PasswordEncoder passwordEncoder; - @Autowired + + @Resource private RedisUtils redisUtils; @Override diff --git a/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java b/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java index 667f283..26b701f 100644 --- a/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java +++ b/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java @@ -3,7 +3,9 @@ package com.tacit.app.config; import com.tacit.common.constant.CommonConstant; import com.tacit.common.utils.AesPasswordEncoder; import com.tacit.common.utils.JwtUtils; +import com.tacit.common.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; @@ -31,6 +33,9 @@ import java.util.Collections; @EnableMethodSecurity(prePostEnabled = true) @Slf4j public class AppSecurityConfig { + + @Autowired + private RedisUtils redisUtils; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { @@ -57,8 +62,8 @@ public class AppSecurityConfig { if (authorization != null && authorization.startsWith(CommonConstant.JWT_PREFIX)) { String token = authorization.substring(CommonConstant.JWT_PREFIX.length()); try { - // 验证JWT令牌 - if (JwtUtils.validateToken(token)) { + // 验证JWT令牌和Redis中的令牌是否存在 + if (JwtUtils.validateToken(token) && redisUtils.hasKey(token)) { // 从令牌中获取用户信息 Long userId = JwtUtils.getUserIdFromToken(token); String username = JwtUtils.getUsernameFromToken(token); diff --git a/tacit-gateway/src/main/java/com/tacit/gateway/filter/JwtAuthenticationFilter.java b/tacit-gateway/src/main/java/com/tacit/gateway/filter/JwtAuthenticationFilter.java index c8a2353..62994ed 100644 --- a/tacit-gateway/src/main/java/com/tacit/gateway/filter/JwtAuthenticationFilter.java +++ b/tacit-gateway/src/main/java/com/tacit/gateway/filter/JwtAuthenticationFilter.java @@ -72,8 +72,8 @@ public class JwtAuthenticationFilter extends AbstractGatewayFilterFactory