From fdb5b222b96d36e839f1843ed24ab9e72f2bc247 Mon Sep 17 00:00:00 2001 From: xboard Date: Sat, 24 May 2025 13:54:57 +0800 Subject: [PATCH] refactor: use request attributes instead of merge for middleware data transfer - Replace request->merge() with request->attributes->set() in Server middleware to avoid polluting user input - Add getNodeInfo() helper method in UniProxyController for cleaner node info access - Update all node_info references to use the new attribute-based approach --- .../V1/Server/UniProxyController.php | 20 +++++++++++++------ app/Http/Middleware/Server.php | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/V1/Server/UniProxyController.php b/app/Http/Controllers/V1/Server/UniProxyController.php index ff81a9f..b6060fb 100644 --- a/app/Http/Controllers/V1/Server/UniProxyController.php +++ b/app/Http/Controllers/V1/Server/UniProxyController.php @@ -19,11 +19,19 @@ class UniProxyController extends Controller ) { } + /** + * 获取当前请求的节点信息 + */ + private function getNodeInfo(Request $request) + { + return $request->attributes->get('node_info'); + } + // 后端获取用户 public function user(Request $request) { ini_set('memory_limit', -1); - $node = $request->input('node_info'); + $node = $this->getNodeInfo($request); $nodeType = $node->type; $nodeId = $node->id; Cache::put(CacheKey::get('SERVER_' . strtoupper($nodeType) . '_LAST_CHECK_AT', $nodeId), time(), 3600); @@ -55,7 +63,7 @@ class UniProxyController extends Controller if (empty($data)) { return $this->success(true); } - $node = $request->input('node_info'); + $node = $this->getNodeInfo($request); $nodeType = $node->type; $nodeId = $node->id; @@ -78,7 +86,7 @@ class UniProxyController extends Controller // 后端获取配置 public function config(Request $request) { - $node = $request->input('node_info'); + $node = $this->getNodeInfo($request); $nodeType = $node->type; $protocolSettings = $node->protocol_settings; @@ -191,7 +199,7 @@ class UniProxyController extends Controller // 获取在线用户数据(wyx2685 public function alivelist(Request $request): JsonResponse { - $node = $request->input('node_info'); + $node = $this->getNodeInfo($request); $deviceLimitUsers = ServerService::getAvailableUsers($node->group_ids) ->where('device_limit', '>', 0); $alive = $this->userOnlineService->getAliveList($deviceLimitUsers); @@ -201,7 +209,7 @@ class UniProxyController extends Controller // 后端提交在线数据 public function alive(Request $request): JsonResponse { - $node = $request->input('node_info'); + $node = $this->getNodeInfo($request); $data = json_decode(request()->getContent(), true); if ($data === null) { return response()->json([ @@ -215,7 +223,7 @@ class UniProxyController extends Controller // 提交节点负载状态 public function status(Request $request): JsonResponse { - $node = $request->input('node_info'); + $node = $this->getNodeInfo($request); $data = $request->validate([ 'cpu' => 'required|numeric|min:0|max:100', diff --git a/app/Http/Middleware/Server.php b/app/Http/Middleware/Server.php index 5ae86fd..8053411 100644 --- a/app/Http/Middleware/Server.php +++ b/app/Http/Middleware/Server.php @@ -23,7 +23,7 @@ class Server throw new ApiException('Server does not exist'); } - $request->merge(['node_info' => $serverInfo]); + $request->attributes->set('node_info', $serverInfo); return $next($request); }