From 50672a5c91c33f2833f91981b562af3d88b9f1d6 Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期四, 30 五月 2024 19:17:45 +0800 Subject: [PATCH] feat: 修复登录bug;token失效bug --- ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java | 26 +++++++++++++++++++++++--- 1 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index 8c757e8..6cbbec4 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -44,8 +44,9 @@ ServerHttpRequest.Builder mutate = request.mutate(); String url = request.getURI().getPath(); + String trim = url.trim(); // 跳过不需要验证的路径 - if (StringUtils.matches(url, ignoreWhite.getWhites())) { + if (StringUtils.matches(trim, ignoreWhite.getWhites())) { return chain.filter(exchange); } String token = getToken(request); @@ -57,8 +58,12 @@ return unauthorizedResponse(exchange, "令牌已过期或验证不正确!"); } String userkey = JwtUtils.getUserKey(claims); + String userkey1 = JwtUtils.getUserKey1(claims); + String userkey2 = JwtUtils.getUserKey2(claims); boolean islogin = redisService.hasKey(getTokenKey(userkey)); - if (!islogin) { + boolean islogin1 = redisService.hasKey(getTokenKey(userkey1)); + boolean islogin2 = redisService.hasKey(getTokenKeyStudy(userkey2)); + if (!islogin && !islogin1 && !islogin2) { return unauthorizedResponse(exchange, "登录状态已过期"); } String userid = JwtUtils.getUserId(claims); @@ -67,8 +72,16 @@ return unauthorizedResponse(exchange, "令牌验证失败"); } + if (org.springframework.util.StringUtils.hasLength(userkey)) { + addHeader(mutate, SecurityConstants.USER_KEY, userkey); + } + if (org.springframework.util.StringUtils.hasLength(userkey1)) { + addHeader(mutate, SecurityConstants.USER_PARENT_KEY, userkey1); + } + if (org.springframework.util.StringUtils.hasLength(userkey2)) { + addHeader(mutate, SecurityConstants.USER_STUDY_KEY, userkey2); + } // 设置用户信息到请求 - addHeader(mutate, SecurityConstants.USER_KEY, userkey); addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); // 内部请求来源参数清除 @@ -102,6 +115,13 @@ } /** + * 获取学习端缓存key + */ + private String getTokenKeyStudy(String token) { + return CacheConstants.LOGIN_TOKEN_KEY_STUDY + token; + } + + /** * 获取请求token */ private String getToken(ServerHttpRequest request) { -- Gitblit v1.7.1