В Laravel 8 есть фасад Illuminate\Support\Facades\RateLimiter, который позволяет установить ограничение на выполнение действий.
Например, мы можем установить лимит запросов в минуту для пользователей. Для этого нам нужно:
1. Подключить данный фасад к классу AppServiceProvider.
2. В метод boot()поместить новое правило. В этом методе мы создаем псевдоним правила, который мы будем использовать в дальнейшем и описываем его само. В данном случае у нас вызывается фасад Limit и oграничивает количество запросов от пользователя до 5 единиц в минуту.
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
RateLimiter::for('validlimit', function (Request $request) {
return Limit::perMinute(5);
});
}
}
Теперь мы можем вызывать это правило в роутере:
Route::get('forum', function () {
})→middleware(['throttle:validlimit']);