From 512ec6707de2a76414a8bb9139232379683bebc3 Mon Sep 17 00:00:00 2001 From: wood chen Date: Wed, 12 Mar 2025 18:54:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E6=94=AF=E6=8C=81=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89OAuth=E5=9B=9E=E8=B0=83=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 docker-compose.yml 中新增 OAUTH_REDIRECT_URI 环境变量配置 - 修改 getCallbackURL 方法,优先使用环境变量指定的回调地址 - 保留原有的自动获取回调地址逻辑作为备选方案 - 增加配置灵活性,方便在不同部署环境中自定义回调地址 --- docker-compose.yml | 3 +++ internal/handler/auth.go | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 391df1b..b931a36 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,4 +10,7 @@ services: - TZ=Asia/Shanghai - OAUTH_CLIENT_ID=your_client_id - OAUTH_CLIENT_SECRET=your_client_secret + #填写公网访问的地址, 需要跟CZL Connect保持一致. + #选填, 不填为自动获取 + - OAUTH_REDIRECT_URI=https://localhost:3336/admin/api/oauth/callback restart: always \ No newline at end of file diff --git a/internal/handler/auth.go b/internal/handler/auth.go index c0c8695..486cc4d 100644 --- a/internal/handler/auth.go +++ b/internal/handler/auth.go @@ -150,11 +150,15 @@ func (h *ProxyHandler) AuthMiddleware(next http.HandlerFunc) http.HandlerFunc { // getCallbackURL 从请求中获取回调地址 func getCallbackURL(r *http.Request) string { - scheme := "http" - if r.TLS != nil || r.Header.Get("X-Forwarded-Proto") == "https" { - scheme = "https" + if os.Getenv("OAUTH_REDIRECT_URI") != "" { + return os.Getenv("OAUTH_REDIRECT_URI") + } else { + scheme := "http" + if r.TLS != nil || r.Header.Get("X-Forwarded-Proto") == "https" { + scheme = "https" + } + return fmt.Sprintf("%s://%s/admin/api/oauth/callback", scheme, r.Host) } - return fmt.Sprintf("%s://%s/admin/api/oauth/callback", scheme, r.Host) } // LoginHandler 处理登录请求,重定向到 OAuth 授权页面