update request log
This commit is contained in:
@@ -29,6 +29,12 @@ class CleanRequestLogsCommand extends HyperfCommand
|
||||
public function handle(): void
|
||||
{
|
||||
$days = (int) $this->input->getOption('days');
|
||||
|
||||
if ($days < 1) {
|
||||
$this->error('保留天数必须大于 0');
|
||||
return;
|
||||
}
|
||||
|
||||
$cutoff = Carbon::now()->subDays($days);
|
||||
|
||||
$deleted = ApiRequestLog::query()
|
||||
|
||||
@@ -86,7 +86,10 @@ class RequestLogMiddleware implements MiddlewareInterface
|
||||
*/
|
||||
public static function sanitizeBody(array $body): array
|
||||
{
|
||||
$sensitive_keys = ['password', 'old_password', 'new_password', 'password_confirmation'];
|
||||
$sensitive_keys = [
|
||||
'password', 'old_password', 'new_password', 'password_confirmation',
|
||||
'token', 'secret', 'api_key', 'access_token', 'refresh_token',
|
||||
];
|
||||
|
||||
foreach ($body as $key => $value) {
|
||||
if (in_array($key, $sensitive_keys, true)) {
|
||||
|
||||
@@ -131,4 +131,43 @@ class RequestLogMiddlewareTest extends TestCase
|
||||
$ip = RequestLogMiddleware::getClientIp($request);
|
||||
$this->assertSame('192.168.1.1', $ip);
|
||||
}
|
||||
|
||||
public function test_get_client_ip_returns_null_when_no_ip_available(): void
|
||||
{
|
||||
$request = new ServerRequest('GET', '/test');
|
||||
|
||||
$ip = RequestLogMiddleware::getClientIp($request);
|
||||
$this->assertNull($ip);
|
||||
}
|
||||
|
||||
public function test_extract_response_code_handles_code_as_string(): void
|
||||
{
|
||||
$response = new Response(200, ['Content-Type' => 'application/json'], json_encode([
|
||||
'code' => '200',
|
||||
'message' => 'success',
|
||||
]));
|
||||
|
||||
$code = RequestLogMiddleware::extractResponseCode($response);
|
||||
$this->assertSame(200, $code);
|
||||
}
|
||||
|
||||
public function test_sanitize_body_handles_deeply_nested_structures(): void
|
||||
{
|
||||
$body = [
|
||||
'level1' => [
|
||||
'level2' => [
|
||||
'level3' => [
|
||||
'password' => 'deep_secret',
|
||||
'token' => 'deep_token',
|
||||
'name' => 'keep_this',
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
$result = RequestLogMiddleware::sanitizeBody($body);
|
||||
|
||||
$this->assertSame('***', $result['level1']['level2']['level3']['password']);
|
||||
$this->assertSame('***', $result['level1']['level2']['level3']['token']);
|
||||
$this->assertSame('keep_this', $result['level1']['level2']['level3']['name']);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user