Эх сурвалжийг харах

fix: 修复未配置keycloak client mappers的情况下,tenant不在jwt时的报错,并在异常处理类中加入异常堆栈打印

zengweijie 2 жил өмнө
parent
commit
1abc107987

+ 2 - 1
src/main/java/com/inspur/smsb/gateway/filter/WebFluxUserRequestInfoFilter.java

@@ -13,6 +13,7 @@ import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.server.ServerWebExchange;
 import reactor.core.publisher.Mono;
@@ -93,7 +94,7 @@ public class WebFluxUserRequestInfoFilter implements GlobalFilter {
                 }
                 //租户转换类型
                 List<String> tenantMap = (List<String>) jwsObject.getPayload().toJSONObject().get("tenant");
-                String tenant = tenantMap.isEmpty()? "unknown" : tenantMap.get(0);
+                String tenant = CollectionUtils.isEmpty(tenantMap) ? "unknown" : tenantMap.get(0);
                 ServerHttpRequest request = exchange.getRequest()
                     .mutate()
                     .header("userId", String.valueOf(jwsObject.getPayload().toJSONObject().get("sub")))

+ 1 - 0
src/main/java/com/inspur/smsb/gateway/handler/GatewayExceptionHandler.java

@@ -58,6 +58,7 @@ public class GatewayExceptionHandler implements ErrorWebExceptionHandler {
         }
 
         log.error("[网关异常处理]请求方法:{},请求路径: {},异常信息: {}", exchange.getRequest().getMethod(), exchange.getRequest().getPath(), ex.getMessage());
+        log.error("异常", ex);
 
         response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
         if (ex instanceof ResponseStatusException) {