РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
882 of 1392 menu

Метод clear

Метод clear класса RateLimiter применяется для полного удаления всех записей, связанных с конкретным ключом ограничения частоты запросов. В качестве единственного параметра метод принимает строковый ключ, по которому хранятся данные об ограничении. После вызова этого метода все попытки и временные метки для указанного ключа будут очищены, что позволяет сбросить ограничения и начать отсчёт заново.

Синтаксис

<?php use Illuminate\Support\Facades\RateLimiter; RateLimiter::clear($key); ?>

Пример

Давайте добавим ограничение для ключа 'login-attempts', совершим несколько попыток, а затем очистим данные и проверим результат:

<?php use Illuminate\Support\Facades\RateLimiter; $key = 'login-attempts'; // Выполняем несколько попыток RateLimiter::hit($key); RateLimiter::hit($key); RateLimiter::hit($key); $available_attempts = RateLimiter::remaining($key); $res = "Available attempts before clear: " . $available_attempts; // Очищаем ограничение RateLimiter::clear($key); $available_after_clear = RateLimiter::remaining($key); $res = $res . "; Available attempts after clear: " . $available_after_clear; echo $res; ?>

Результат выполнения кода:

"Available attempts before clear: 7; Available attempts after clear: 10"

Пример

Рассмотрим пример с очисткой ограничения при успешном выполнении действия. После того как пользователь успешно вошёл в систему, мы очищаем все попытки входа:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Http\Request; class AuthController extends Controller { public function login(Request $request) { $key = 'login-attempts:' . $request->ip(); // Проверяем, не превышено ли ограничение if (RateLimiter::tooManyAttempts($key, 5)) { return response()->json([ 'error' => 'Too many login attempts.' ], 429); } // Имитация попытки входа (неуспешная) RateLimiter::hit($key, 60); // Проверка успешности входа (имитация) if ($request->email === 'user@example.com' && $request->password === 'password') { // При успешном входе очищаем ограничения RateLimiter::clear($key); return response()->json([ 'success' => 'Logged in successfully.' ]); } return response()->json([ 'error' => 'Invalid credentials.' ], 401); } } ?>

Пример

Метод clear также полезен при работе с несколькими типами ограничений для одного пользователя. Очистим все ограничения для конкретного пользователя:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\RateLimiter; use App\Models\User; class UserController extends Controller { public function resetRateLimits($userId) { $user = User::find($userId); if (!$user) { return response()->json([ 'error' => 'User not found.' ], 404); } // Очищаем ограничения для разных действий $keys = [ 'login-attempts:' . $user->id, 'api-requests:' . $user->id, 'password-reset:' . $user->email ]; foreach ($keys as $key) { RateLimiter::clear($key); } return response()->json([ 'success' => 'Rate limits reset successfully.' ]); } } ?>

Результат выполнения кода при успешном сбросе:

{"success":"Rate limits reset successfully."}

Смотрите также

  • метод attempt,
    который выполняет действие с учётом ограничений
  • метод hit,
    который увеличивает счётчик попыток для ключа
  • метод tooManyAttempts,
    который проверяет превышение количества попыток
  • метод remaining,
    который возвращает количество оставшихся попыток
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить