وقت بخیر دوستان.
من دوتا route دارم و میخوام با استفاده از throttle بگم که کاربر به هرکدوم از این روت ها هر ساعت 5 بار دسترسی داشته باشه (به هرکدوم)
و به این شکل نوشتمش:
Route::middleware('throttle:5,60')->group(function () {
Route::get('test1' , function (){
return 'test1';
});
});
Route::middleware('throttle:5,60')->group(function () {
Route::get('test2' , function (){
return 'test2';
});
});
ولی مشکلی که پیش اومده اینه که throttle بصورت جداگانه حساب نمیکنه تعداد دفعات بازدید روت ها رو. یعنی من اگه روت test1 رو 5 بار ببینم باز ششم هم روت test1 و هم روت test2 خطا میدن(tooMantAttempts) .
راهی وجود داره که بصورت جداگانه شمارش کنه؟ یعنی 5بار test1 و 5بار هم test2 رو شمارش کنه ؟
این لینک رو ببینین شاید چیزی دستگیرتون شد.
https://github.com/laravel/framework/issues/22929
احتمالا این مشکل در نسخههای بعدی حل بشه. فکر میکنم احتمالا متد fingerprint رو دوباره به کلاس Request اضافه کنند.. چون در شرایط فعلی Counter موجود به صورت مشترک شمرده میشه
@Alimotreb
درود
بله از نسخه 5.5.32 به بعد که متد fingerprint کلاس Request رو با getAuthIdentifier در کلاس User عوض کردند.. این مشکل پیش اومده..
من خودم چندوقتی هست در تعداد کمی از Route ها از این میدلور استفاده میکنم تا این مشکل برطرف بشه.
البته یه Pull Request هم Merge کردن که خودش هم خالی از مشکل نبوده و یکی از مواردش همین Route های مورد استفاده در Group هست => #19807
جدیدا سازنده لاراول taylor otwell در متنی اعلام کرده که این قابلیت در نسخه ۵.۹ از حالت domain-level به حالت Route-level تغییر پیدا میکنه.
[5.9] Fix throttling on a route-level rather than domain level
@ali.bayat
بله منم یکم درموردش خوندم ظاهرا دنبال یه روش خوب بودن که هم بتونن برای حالت لاگین/مهمان و هم حالت route-level پیاده سازیش کنن.
ممنون بابت اطلاعات کامل.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟