RateLimiter как получить количество оставшихся попыток (X-RateLimit-Remaining)?
Как получить количество оставшихся попыток (X-RateLimit-Remaining) со стороны сервера? Что бы например вывести юзеру в профиле.
Небольшой пример:
RouteServiceProvider
RateLimiter::for('test', function (Request $request) {
Limit::perMinute(10)->by('test');
});
Маршрут
Route::middleware(['throttle:test'])->get('test', function () {
return RateLimiter::attempts('test'); //Так не выводит result: 0
//return Cache::get('test'); //Так тоже пусто
});
Вроде как в кеше должно хранится, но не понятно почему не могу получить? Хотя сам RateLimiter работает если сделать запрос то в header есть данные о количестве оставшихся запросов. laravel 8.
Ответы (2 шт):
Автор решения: nomnoms12
→ Ссылка
Вы можете получить количество оставшихся попыток, вызвав метод remaining:
RateLimiter::remaining('test', $perMinute = 10);
Соответствующий раздел документации: Manually Incrementing Attempts.
Автор решения: Михаил Петров
→ Ссылка
Ответ:
RouteServiceProvider
RateLimiter::for('test', function (Request $request) {
Limit::perMinute(10)->by('test');
});
Маршрут
Route::middleware(['throttle:test'])->get('test', function () {
$limiterName = 'test';
$limit_key = 'test';
$key = md5($limiterName.$limit_key);
return RateLimiter::attempts($key);
});