اول از همه کلاس App\Providers\RouteServiceProvider را باز کن و متد configureRateLimiting رو توش اضافه کن
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
class AppServiceProvider extends ServiceProvider
{
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('global', function (Request $request) {
return Limit::perHour(۱)->by($request->ip());
});
}
}
بعد از اینکه AppServiceProvider تعریف کردی، باید روت ها یا گروه روت ها را با استفاده از throttle middleware وصل کنید. واسه این کار هم فایل routes/web.php رو باز کنید و گروه روت ها رو تعریف کنید.
<?php
use App\Http\Controllers\VideoController;
Route::middleware(['throttle:ip_address'])->group(function () {
Route::get('/video-view', [VideoController::class, 'videoView']);
});
یک میدل ور در لاراول برای این کار تعبیه شده بنام throttle که دقیقا میتونید برای هر Route (در مثال شما میشه Route مربوط به submit کردن در خبرنامه) محدودیت تعداد درخواست در یک زمان مشخص تعیین کنید تا اگر بیشتر شد خود لاراول بصورت اتومات استاتوس کد 429 - Too Many Requests
ارسال کنه.
مثال:
Route::post('/email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
->middleware(['throttle:6,1']);
مثال فوق یعنی این route به ازای هر IP آدرس فقط ۶ بار در یک دقیقه میتونه فراخونی بشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟