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

Метод remaining

Метод remaining класса RateLimiter применяется для определения количества оставшихся доступных попыток выполнения действия в рамках текущего временного окна. Первым параметром передаётся ключ ограничителя, вторым необязательным параметром - количество разрешённых попыток. Если второй параметр не указан, метод использует значение из конфигурации ограничителя. Метод возвращает целое число оставшихся попыток.

Синтаксис

<?php use Illuminate\Support\Facades\RateLimiter; $remaining = RateLimiter::remaining($key); $remaining = RateLimiter::remaining($key, $maxAttempts); ?>

Пример

Давайте получим оставшиеся попытки для ключа 'login:user1':

<?php use Illuminate\Support\Facades\RateLimiter; $key = 'login:user1'; $maxAttempts = 5; // Записываем несколько попыток RateLimiter::hit($key, 60); RateLimiter::hit($key, 60); $remaining = RateLimiter::remaining($key, $maxAttempts); echo $remaining; ?>

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

3

В этом примере после двух неудачных попыток входа, пользователь может сделать ещё три попытки до достижения лимита в пять.

Пример

Использование метода remaining для проверки доступных попыток перед выполнением действия:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; class AuthController extends Controller { public function login(Request $request) { $key = 'login:' . $request->input('email'); $maxAttempts = 5; if (RateLimiter::remaining($key, $maxAttempts) > 0) { // Пользователь может попытаться войти return response()->json(['status' => 'allowed']); } else { $seconds = RateLimiter::availableIn($key); return response()->json([ 'status' => 'too_many_attempts', 'retry_after' => $seconds ]); } } } ?>

Результат выполнения кода при запросе с email 'test@example.com':

{"status":"allowed"}

Пример

Использование метода remaining в контроллере для отображения оставшихся попыток пользователю:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; class ProfileController extends Controller { public function showAttempts(Request $request) { $key = 'profile:' . $request->user()->id; $maxAttempts = 3; $remaining = RateLimiter::remaining($key, $maxAttempts); $totalAttempts = RateLimiter::attempts($key); return view('profile.attempts', [ 'remaining' => $remaining, 'total' => $totalAttempts, 'max' => $maxAttempts ]); } } ?>

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

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