Метод hit
Метод hit класса RateLimiter применяется для инкрементации счетчика попыток выполнения определенного действия. Первым параметром передается ключ, идентифицирующий действие и пользователя, вторым параметром - количество попыток, на которое нужно увеличить счетчик (по умолчанию 1). Метод возвращает количество оставшихся попыток.
Синтаксис
<?php
use Illuminate\Support\Facades\RateLimiter;
$remaining = RateLimiter::hit($key, $decaySeconds);
?>
Пример
Давайте увеличим счетчик попыток для пользователя с id равным 1 при отправке формы:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesRateLimiter;
class FormController extends Controller
{
public function submit()
{
$key = 'submit-form:' . auth()->id();
$remaining = RateLimiter::hit($key, 60);
echo "Remaining attempts: " . $remaining;
}
}
?>
Результат выполнения кода:
"Remaining attempts: 9"
Пример
Давайте увеличим счетчик на 3 попытки для API-запроса:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesRateLimiter;
class ApiController extends Controller
{
public function request()
{
$key = 'api-request:' . request()->ip();
$remaining = RateLimiter::hit($key, 60, 3);
echo "Remaining attempts: " . $remaining;
}
}
?>
Результат выполнения кода:
"Remaining attempts: 7"
Пример
Давайте проверим, не превышен ли лимит попыток, перед выполнением действия:
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesRateLimiter;
class AuthController extends Controller
{
public function login()
{
$key = 'login:' . request()->ip();
if (RateLimiter::tooManyAttempts($key, 5)) {
$seconds = RateLimiter::availableIn($key);
echo "Too many attempts. Try again in " . $seconds . " seconds.";
return;
}
RateLimiter::hit($key, 60);
echo "Login attempt recorded.";
}
}
?>
Результат выполнения кода:
"Login attempt recorded."
Смотрите также
-
метод
attempt,
который выполняет действие и увеличивает счетчик при успехе -
метод
tooManyAttempts,
который проверяет превышение лимита попыток -
метод
remaining,
который возвращает количество оставшихся попыток -
метод
clear,
который сбрасывает счетчик попыток