add request helper

This commit is contained in:
2026-03-18 08:49:10 +08:00
parent 58afb7c385
commit f3f73935e1
8 changed files with 51 additions and 54 deletions
@@ -6,6 +6,7 @@ namespace App\Middleware;
use App\Model\ApiRequestLog;
use App\Utils\Log;
use App\Utils\RequestHelper;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
@@ -39,7 +40,7 @@ class RequestLogMiddleware implements MiddlewareInterface
$method = $request->getMethod();
$path = $request->getUri()->getPath();
$status_code = $response->getStatusCode();
$ip = self::getClientIp($request);
$ip = RequestHelper::getClientIp($request);
$user_agent = $request->getHeaderLine('User-Agent') ?: null;
// GET/DELETE 请求不记录请求体
@@ -130,26 +131,4 @@ class RequestLogMiddleware implements MiddlewareInterface
return null;
}
/**
* 获取客户端真实 IP
*
* 优先级:X-Forwarded-For → X-Real-IP → ServerParams remote_addr
*/
public static function getClientIp(ServerRequestInterface $request): ?string
{
// X-Forwarded-For 可能包含多个 IP,取第一个
$forwarded_for = $request->getHeaderLine('X-Forwarded-For');
if ($forwarded_for !== '') {
$ips = explode(',', $forwarded_for);
return trim($ips[0]);
}
$real_ip = $request->getHeaderLine('X-Real-IP');
if ($real_ip !== '') {
return trim($real_ip);
}
$server_params = $request->getServerParams();
return $server_params['remote_addr'] ?? null;
}
}