diff --git a/pom.xml b/pom.xml
index 02c4096..a676e0b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,12 @@
knife4j-gateway-spring-boot-starter
4.4.0
+
+
+ com.github.xiaoymin
+ knife4j-openapi3-ui
+ 4.4.0
+
diff --git a/src/main/java/com/aida/gateway/filter/GlobalAuthWebFilter.java b/src/main/java/com/aida/gateway/filter/GlobalAuthWebFilter.java
index 861f844..cc5e65a 100644
--- a/src/main/java/com/aida/gateway/filter/GlobalAuthWebFilter.java
+++ b/src/main/java/com/aida/gateway/filter/GlobalAuthWebFilter.java
@@ -95,12 +95,21 @@ public class GlobalAuthWebFilter implements WebFilter {
// 5. 黑名单检查(仅当启用时)
if (authProperties.isBlacklistEnabled()) {
String blacklistKey = AuthConstants.BLACKLIST_PREFIX + principal.getId();
- Boolean isBlacklisted = redisTemplate.hasKey(blacklistKey).block();
- if (Boolean.TRUE.equals(isBlacklisted)) {
- return writeUnauthorized(exchange, AuthConstants.MSG_TOKEN_BLACKLISTED);
- }
+ return redisTemplate.hasKey(blacklistKey).flatMap(isBlacklisted -> {
+ if (Boolean.TRUE.equals(isBlacklisted)) {
+ return writeUnauthorized(exchange, AuthConstants.MSG_TOKEN_BLACKLISTED);
+ }
+ return continueChain(exchange, chain, principal);
+ }).onErrorResume(e -> {
+ log.error("Redis check failed", e);
+ return continueChain(exchange, chain, principal);
+ });
}
+ return continueChain(exchange, chain, principal);
+ }
+
+ private Mono continueChain(ServerWebExchange exchange, WebFilterChain chain, AuthPrincipalVo principal) {
// 6. 写入下游请求头
String userInfoJson;
try {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index cd33cb6..42f0b93 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,7 +9,25 @@ server:
spring:
application:
name: aida-gateway
-
+ cloud:
+ gateway:
+ routes:
+ - id: aida-back
+ uri: lb://aida-back
+ predicates:
+ - Path=/aida/**
+ filters:
+ - StripPrefix=1
+ - id: aida-seller
+ uri: lb://aida-seller
+ predicates:
+ - Path=/seller/**
+ filters:
+ - StripPrefix=1
+ - id: aida-python
+ uri: http://18.167.251.121:9994
+ predicates:
+ - Path=/python/**
# ---------- Knife4j 网关聚合配置 ----------
knife4j:
gateway:
@@ -17,13 +35,13 @@ knife4j:
# 手动指定下游服务的文档聚合,可以灵活应对不同服务的 API 版本或路径前缀
strategy: manual
routes:
- - name: 业务服务 (Back)
- url: /api/v3/api-docs
+ - name: aida主服务
+ url: /aida/v3/api-docs
service-name: aida-back
- context-path: /api
+ context-path: /aida
order: 1
- name: 商家端服务 (Seller)
- url: /seller/api/v3/api-docs
+ url: /seller/v3/api-docs
service-name: aida-seller
context-path: /seller
order: 2
@@ -31,7 +49,7 @@ knife4j:
# ---------- Gateway JWT 认证(gateway 独有) ----------
gateway:
auth:
- jwt-secret: ${BACK_JWT_SECRET:JWTSECRET}
+ jwt-secret: JWTSECRET
jwt-token-header: Authorization
jwt-token-prefix: Bearer-
blacklist-enabled: true
@@ -76,6 +94,56 @@ gateway:
- /api/global-award/**
- /api/llm/stream
- /notification/**
+ - /aida/api/account/login
+ - /aida/api/account/preLogin
+ - /aida/api/designer/check
+ - /aida/api/account/sendEmail
+ - /aida/api/account/noLoginRequired
+ - /aida/api/account/resetPwd
+ - /aida/api/account/designWorksRegister
+ - /aida/api/account/questionnaire
+ - /aida/api/account/schoolLogin
+ - /aida/api/account/enterpriseLogin
+ - /aida/api/account/organizationNameSearch
+ - /aida/api/account/activateNewEmail
+ - /aida/api/python/saveGeneratePicture
+ - /aida/api/python/getLibraryByUserId
+ - /aida/api/python/flush
+ - /aida/api/account/healthy
+ - /aida/api/third/party/**
+ - /aida/api/element/initDefaultSysFile
+ - /aida/api/ali-pay/trade/notify
+ - /aida/api/paypal/ipn/back
+ - /aida/api/alipay-hk/trade/notify
+ - /aida/api/stripe/trade/notify
+ - /aida/api/portfolio/**
+ - /aida/api/global-award/**
+ - /aida/api/llm/stream
+ - /aida/account/login
+ - /aida/account/preLogin
+ - /aida/designer/check
+ - /aida/account/sendEmail
+ - /aida/account/noLoginRequired
+ - /aida/account/resetPwd
+ - /aida/account/designWorksRegister
+ - /aida/account/questionnaire
+ - /aida/account/schoolLogin
+ - /aida/account/enterpriseLogin
+ - /aida/account/organizationNameSearch
+ - /aida/account/activateNewEmail
+ - /aida/python/saveGeneratePicture
+ - /aida/python/getLibraryByUserId
+ - /aida/python/flush
+ - /aida/account/healthy
+ - /aida/third/party/**
+ - /aida/element/initDefaultSysFile
+ - /aida/ali-pay/trade/notify
+ - /aida/paypal/ipn/back
+ - /aida/alipay-hk/trade/notify
+ - /aida/stripe/trade/notify
+ - /aida/portfolio/**
+ - /aida/global-award/**
+ - /aida/llm/stream
logging:
level: