From 411ebe4d177fe39ace3fbc87ae72120fd01f0f72 Mon Sep 17 00:00:00 2001 From: Yuhao Jiang Date: Sun, 4 Jan 2026 22:52:00 -0600 Subject: [PATCH] =?UTF-8?q?fix(=E5=90=8E=E7=AB=AF):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20Turnstile=20Secret=20Key=20=E7=95=99=E7=A9=BA=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E5=BD=93=E5=89=8D=E5=80=BC=E4=B8=8D=E7=94=9F=E6=95=88?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前端显示"密钥已配置,留空以保留当前值",但后端验证逻辑直接 要求该字段非空,导致修改其他设置时报错。 修复方案: - 当 TurnstileSecretKey 为空时,检查 previousSettings 是否有已保存的值 - 如果有,使用已保存的值而非返回错误 - 同时移除重复获取 currentSettings 的代码,直接复用 previousSettings 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../internal/handler/admin/setting_handler.go | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/backend/internal/handler/admin/setting_handler.go b/backend/internal/handler/admin/setting_handler.go index c6a14464..538af15c 100644 --- a/backend/internal/handler/admin/setting_handler.go +++ b/backend/internal/handler/admin/setting_handler.go @@ -139,21 +139,18 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) { response.BadRequest(c, "Turnstile Site Key is required when enabled") return } + // 如果未提供 secret key,使用已保存的值(留空保留当前值) if req.TurnstileSecretKey == "" { - response.BadRequest(c, "Turnstile Secret Key is required when enabled") - return - } - - // 获取当前设置,检查参数是否有变化 - currentSettings, err := h.settingService.GetAllSettings(c.Request.Context()) - if err != nil { - response.ErrorFrom(c, err) - return + if previousSettings.TurnstileSecretKey == "" { + response.BadRequest(c, "Turnstile Secret Key is required when enabled") + return + } + req.TurnstileSecretKey = previousSettings.TurnstileSecretKey } // 当 site_key 或 secret_key 任一变化时验证(避免配置错误导致无法登录) - siteKeyChanged := currentSettings.TurnstileSiteKey != req.TurnstileSiteKey - secretKeyChanged := currentSettings.TurnstileSecretKey != req.TurnstileSecretKey + siteKeyChanged := previousSettings.TurnstileSiteKey != req.TurnstileSiteKey + secretKeyChanged := previousSettings.TurnstileSecretKey != req.TurnstileSecretKey if siteKeyChanged || secretKeyChanged { if err := h.turnstileService.ValidateSecretKey(c.Request.Context(), req.TurnstileSecretKey); err != nil { response.ErrorFrom(c, err)