- * 前端 SPA 启动阶段(用户尚未登录)就要拉运行时配置,而 yh-auth 的 CAS 过滤器
- * (HIGHEST+4..+9,url-pattern /api/*)会把未登录请求 302 到 CAS 登录页,导致配置拉取失败。
- * 本过滤器注册在所有 CAS 过滤器之前(HIGHEST+3),精确匹配该端点路径后直接 forward:
- * forward 属 FORWARD 派发,只经过为 FORWARD 注册的过滤器(CAS 四件套均仅注册 REQUEST 派发),
- * 请求直达 DispatcherServlet 的 {@link com.yunhai.userbase.controller.api.EnvConfigController}。
- * 其余 /api/** 请求完全不受影响,登录态拦截行为逐字节不变。
- */
-@Configuration
-public class EnvConfigPublicConfig {
-
- /** 免登录端点的 context 相对路径(与 EnvConfigController 的 /{platform}/env-config 中 platform=api 对应) */
- public static final String PUBLIC_PATH = "/api/env-config";
-
- @Bean
- public FilterRegistrationBean
- * 返回 projman 配置管理维护、双写 Nacos 的 env-config-{front}.json 原文(JSON),
- * 前端 SPA 启动时请求 {@code GET /userbase/api/env-config?front=front},替代 config/index.js
- * 与构建期 VITE_* 环境变量,实现接口地址等配置在线改、免发版生效。
- * projman 配置管理中的 env-config-{前端目标名}.json 会双写到 Nacos
- * (dataId = front-{应用名}-{目标名},group = FRONT_GROUP,type = json),
- * 本服务按前端目标名读取并原样返回 JSON 串,经 {@code GET /api/env-config?front=xxx} 提供给前端 SPA,
- * 替代构建期写死的 VITE_* 环境变量与 config/index.js 静态文件。
- *
- * 容错口径:读不到(本地未开 Nacos / dataId 不存在 / 超时)一律返回 {@code "{}"},
- * 前端拿空对象后走 import.meta.env 构建期兜底,不影响启动。
- */
-@Service
-public class EnvConfigService {
-
- private static final Logger log = LoggerFactory.getLogger(EnvConfigService.class);
-
- /** 前端目标名白名单:projman 前端目标创建时即限制为简单标识符,此处同口径校验,防 dataId 拼接注入 */
- private static final String FRONT_NAME_PATTERN = "^[A-Za-z0-9_-]{1,64}$";
-
- /** Nacos dataId 前缀:front-{应用名}-,与 projman AppConfigFileService 双写规则一致 */
- @Value("${yh.env-config.data-id-prefix:front-userbase-}")
- private String dataIdPrefix;
-
- /** Nacos group,与 projman 双写侧 FRONT_GROUP 常量一致 */
- @Value("${yh.env-config.group:FRONT_GROUP}")
- private String group;
-
- /** 结果缓存 TTL:前端 SPA 每次打开页面都会拉一次,缓存削峰避免轮询打穿 Nacos */
- private static final long CACHE_TTL_MS = 30_000L;
-
- private final Map
- * {@code /api/*} 前缀是 Caddy 反代到后端的既有路由,免登录放行由
- * {@link com.yunhai.userbase.config.EnvConfigPublicConfig} 的旁路过滤器实现。
- */
-@RestController
-@RequestMapping(value = Config.API_PATH + "/env-config")
-public class EnvConfigController {
-
- @Autowired
- private EnvConfigService envConfigService;
-
- /** 配置内容为非敏感信息(前端 JS 最终也会持有),按方案约定不做登录鉴权 */
- @Operation(summary = "前端运行时配置(projman 双写 Nacos,免登录)", operationId = "envConfig")
- @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
- public String get(@RequestParam(value = "front", defaultValue = "front") String front) {
- return envConfigService.get(front);
- }
-}
diff --git a/src/main/java/com/yunhai/userbase/service/impl/EnvConfigService.java b/src/main/java/com/yunhai/userbase/service/impl/EnvConfigService.java
deleted file mode 100644
index 1422c75..0000000
--- a/src/main/java/com/yunhai/userbase/service/impl/EnvConfigService.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.yunhai.userbase.service.impl;
-
-import com.alibaba.cloud.nacos.NacosConfigManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * 前端运行时配置读取(方案:Projman/前端动态配置方案-env-config接入落地.md)。
- *