add request helper
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user