微服务改造

This commit is contained in:
litianxiang
2026-04-22 15:54:43 +08:00
parent 5284bfa813
commit f7e87fe84c
3 changed files with 93 additions and 10 deletions

View File

@@ -106,6 +106,12 @@
<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-ui</artifactId>
<version>4.4.0</version>
</dependency>
<!-- Spring Cloud LoadBalancer -->
<dependency>

View File

@@ -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<Void> continueChain(ServerWebExchange exchange, WebFilterChain chain, AuthPrincipalVo principal) {
// 6. 写入下游请求头
String userInfoJson;
try {

View File

@@ -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: