diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/auth/service/JwtService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/auth/service/JwtService.java index 6d849529..52937ee0 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/auth/service/JwtService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/auth/service/JwtService.java @@ -35,11 +35,12 @@ public class JwtService { String configured = props.getJwtSecret(); byte[] keyBytes; if (configured == null || configured.isBlank()) { - // 已分发到用户机器的桌面客户端内置同一个默认密钥,服务端必须保持一致, - // 不能随机生成,否则所有旧客户端 /api/auth/sync 验签失败导致无法登录。 + // 兜底:未配置时使用内置默认密钥(公开值,等同无防护,任何人可伪造 token)。 + // 桌面客户端本地 Flask 已退役,服务端可独立轮换密钥;若恢复客户端侧验签, + // 需与客户端同步下发密钥后才能轮换。 keyBytes = INSECURE_DEFAULT_SECRET.getBytes(StandardCharsets.UTF_8); log.warn("[auth] AIIMAGE_JWT_SECRET 未配置,使用内置默认密钥;" - + "生产环境请通过环境变量 AIIMAGE_JWT_SECRET 配置固定密钥(需与桌面客户端一致)"); + + "生产环境请在 application-server.yml 配置 aiimage.auth.jwt-secret"); } else { keyBytes = configured.getBytes(StandardCharsets.UTF_8); }