change ratelimiter

This commit is contained in:
root
2026-01-12 17:50:46 +03:00
parent 246ca93307
commit 077b79b8f7
14 changed files with 1012 additions and 141 deletions
+24 -1
View File
@@ -2,6 +2,8 @@
namespace Config;
use App\Libraries\RateLimitIdentifier;
use App\Services\RateLimitService;
use CodeIgniter\Config\BaseService;
/**
@@ -45,9 +47,30 @@ class Services extends BaseService
return new \App\Services\AccessService();
}
/**
* Сервис для идентификации клиентов в rate limiting
*
* Использует комбинацию cookie token + IP + User Agent
* для уникальной идентификации браузера клиента.
*
* @param bool $getShared
* @return \App\Libraries\RateLimitIdentifier
*/
public static function rateLimitIdentifier(bool $getShared = true)
{
if ($getShared) {
return static::getSharedInstance('rateLimitIdentifier');
}
return new RateLimitIdentifier();
}
/**
* Сервис для rate limiting
*
* Обеспечивает защиту от брутфорса и ограничение частоты запросов.
* При недоступности Redis автоматически использует файловый кэш.
*
* @param bool $getShared
* @return \App\Services\RateLimitService|null
*/
@@ -58,7 +81,7 @@ class Services extends BaseService
}
try {
return \App\Services\RateLimitService::getInstance();
return RateLimitService::getInstance();
} catch (\Exception $e) {
log_message('warning', 'RateLimitService unavailable: ' . $e->getMessage());
return null;