微服务改造

This commit is contained in:
litianxiang
2026-04-22 11:15:35 +08:00
parent 1c04b32544
commit 218bed1813
5 changed files with 41 additions and 55 deletions

View File

@@ -25,6 +25,7 @@ import reactor.core.publisher.Mono;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import org.springframework.util.AntPathMatcher;
import org.springframework.beans.factory.annotation.Qualifier;
/**
@@ -46,6 +47,7 @@ public class GlobalAuthWebFilter implements WebFilter {
@Qualifier("reactiveRedisTemplate")
private final ReactiveRedisTemplate<String, String> redisTemplate;
private final ObjectMapper objectMapper;
private final AntPathMatcher pathMatcher = new AntPathMatcher();
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
@@ -121,27 +123,13 @@ public class GlobalAuthWebFilter implements WebFilter {
return false;
}
for (String pattern : authProperties.getIgnorePaths()) {
if (matches(pattern, requestUri)) {
if (pathMatcher.match(pattern, requestUri)) {
return true;
}
}
return false;
}
private boolean matches(String pattern, String uri) {
if (pattern.endsWith("/**")) {
String prefix = pattern.substring(0, pattern.length() - 3);
return uri.startsWith(prefix);
}
if (pattern.endsWith("/*")) {
String prefix = pattern.substring(0, pattern.length() - 2);
if (!uri.startsWith(prefix)) return false;
String suffix = uri.substring(prefix.length());
return !suffix.contains("/");
}
return uri.contains(pattern);
}
private Claims parseToken(String token) {
SecretKey key = buildSigningKey();
return Jwts.parser()

View File

@@ -1,37 +0,0 @@
package com.aida.gateway.route;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 路由配置。
* <p>
* 注意:实际生产环境中建议将路由配置放在 Nacos 配置中心。
* StripPrefix=1 将 /seller 前缀剥离,例如:
* /seller/designer/check -> /designer/check (发到 aida-seller 的 /api/designer/check)
*/
@Configuration
public class RouteConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
// /internal/** 用于内部服务调用(如 logout 黑名单),不需要 stripPrefix
.route("aida-gateway-internal", r -> r
.path("/internal/**")
.uri("forward:/internal"))
// aida-seller 服务
.route("aida-seller", r -> r
.path("/seller/**")
.filters(f -> f.stripPrefix(1))
.uri("lb://aida-seller"))
// aida-back_001 服务
.route("aida-back", r -> r
.path("/api/**")
.filters(f -> f.stripPrefix(1))
.uri("lb://aida-back"))
.build();
}
}