diff --git a/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index 51d39ef..089ed91 100644 --- a/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -49,7 +49,25 @@ public class AuthFilter implements GlobalFilter, Ordered // 跳过不需要验证的路径 if (StringUtils.matches(url, ignoreWhite.getWhites())) { - return chain.filter(exchange); + // 白名单路径也尝试解析token并传递用户信息(如果有token的话) + String token = getToken(request); + if (StringUtils.isNotEmpty(token)) + { + Claims claims = JwtUtils.parseToken(token); + if (claims != null) + { + String userkey = JwtUtils.getUserKey(claims); + String userid = JwtUtils.getUserId(claims); + String username = JwtUtils.getUserName(claims); + // 设置用户信息到请求 + addHeader(mutate, SecurityConstants.USER_KEY, userkey); + addHeader(mutate, SecurityConstants.DETAILS_USER_ID, userid); + addHeader(mutate, SecurityConstants.DETAILS_USERNAME, username); + } + } + // 内部请求来源参数清除 + removeHeader(mutate, SecurityConstants.FROM_SOURCE); + return chain.filter(exchange.mutate().request(mutate.build()).build()); } String token = getToken(request); if (StringUtils.isEmpty(token))