From db2e31680c75591146ff51707808752fadf080a4 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Wed, 13 May 2026 11:18:04 +0800 Subject: [PATCH] =?UTF-8?q?i18=E8=BE=93=E5=87=BA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/TokenAuthenticationFilter.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java b/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java index ba281cc63..059b1c9c5 100644 --- a/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java +++ b/cf-gateway/src/main/java/com/cf/imes/gateway/filter/security/TokenAuthenticationFilter.java @@ -2,6 +2,7 @@ package com.cf.imes.gateway.filter.security; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.cf.imes.framework.common.exception.ErrorCode; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.pojo.CommonResult; @@ -16,6 +17,7 @@ import jakarta.annotation.Resource; import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerExchangeFilterFunction; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.core.Ordered; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @@ -24,6 +26,7 @@ import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; +import java.util.Locale; import java.util.Objects; import java.util.function.Function; @@ -80,6 +83,14 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered { // 移除 login-user 的请求头,避免伪造模拟 SecurityFrameworkUtils.removeLoginUser(exchange); + String Language = exchange.getRequest() + .getHeaders() + .getFirst("Accept-Language"); + if (StrUtil.isEmpty(Language)) { + Language = Locale.CHINA.getLanguage(); + } + LocaleContextHolder.setLocale(Locale.forLanguageTag(Language)); + // 情况一,如果没有 Token 令牌,则直接继续 filter String token = SecurityFrameworkUtils.obtainAuthorization(exchange); if (CharSequenceUtil.isEmpty(token)) { @@ -120,9 +131,7 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered { ServerWebExchange newExchange = exchange.mutate() .request(builder -> SecurityFrameworkUtils.setLoginUserHeader(builder, user)) .build(); - System.out.println("========== FINAL EXCHANGE =========="); - System.out.println("Accept-Language FINAL = " - + newExchange.getRequest().getHeaders().getFirst("Accept-Language")); + return chain.filter(newExchange); }); } @@ -131,6 +140,8 @@ public class TokenAuthenticationFilter implements GlobalFilter, Ordered { // 用token从checktoken api中获取当前用户 Long organId = WebFrameworkUtils.getOrganId(exchange); return checkAccessToken(organId, token).flatMap((Function>) body -> { + System.out.println("Accept-Language CHECKTOKEN = " + + exchange.getRequest().getHeaders().getFirst("Accept-Language")); LoginUser remoteUser = buildUser(body); if (remoteUser != null) { return Mono.just(remoteUser);