From 6357e5dbdcde7380f2ca9c739d266854d09876c2 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 26 Feb 2026 10:06:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=A3=9E=E4=B9=A6?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95=20404=20=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端路由修正 - 将 /login/qrcode/{id} 移出 /api/v1 路由组 - 修正路由参数获取方式,使用参数注入而非 getRouteParam() 2. OpenResty 配置 - 添加 /login/qrcode/ 路径代理到后端 Co-Authored-By: Claude Opus 4.6 --- backend/app/controller/AuthController.php | 4 ++-- backend/config/route.php | 4 +++- nginx/x-server-api.conf | 16 ++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/backend/app/controller/AuthController.php b/backend/app/controller/AuthController.php index c5d3dca..86b94a6 100644 --- a/backend/app/controller/AuthController.php +++ b/backend/app/controller/AuthController.php @@ -216,9 +216,9 @@ class AuthController extends BaseController /** * 飞书扫码登录回调(飞书授权后的回调) */ - public function qrcodeLoginCallback(Request $request): Response + public function qrcodeLoginCallback(Request $request, $id = null): Response { - $sessionId = $this->getRouteParam($request, 'id'); + $sessionId = $id; $authCode = $request->get('auth_code'); if (!$sessionId) { diff --git a/backend/config/route.php b/backend/config/route.php index d0f017e..eba94e5 100644 --- a/backend/config/route.php +++ b/backend/config/route.php @@ -12,9 +12,11 @@ Route::group('/api/v1', function () { Route::post('/auth/feishu-login', [app\controller\AuthController::class, 'feishuLogin']); Route::post('/auth/qrcode-login', [app\controller\AuthController::class, 'qrcodeLogin']); Route::get('/auth/qrcode-login/status', [app\controller\AuthController::class, 'qrcodeLoginStatus']); - Route::get('/login/qrcode/{id}', [app\controller\AuthController::class, 'qrcodeLoginCallback']); })->middleware($apiMiddleware); +// 飞书登录回调(不在 /api/v1 下,供飞书重定向使用) +Route::get('/login/qrcode/{id}', [app\controller\AuthController::class, 'qrcodeLoginCallback'])->middleware($apiMiddleware); + // 用户路由(需要认证) Route::group('/api/v1/user', function () { Route::get('/info', [app\controller\UserController::class, 'info']); diff --git a/nginx/x-server-api.conf b/nginx/x-server-api.conf index 27fc8e6..315ada3 100644 --- a/nginx/x-server-api.conf +++ b/nginx/x-server-api.conf @@ -28,6 +28,22 @@ server { proxy_read_timeout 60s; } + # 飞书登录回调代理 + location /login/qrcode/ { + proxy_pass http://127.0.0.1:8787/login/qrcode/; + proxy_http_version 1.1; + + # 传递真实IP + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # 超时设置 + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + } + # 健康检查端点 location /health { access_log off;