محدود سازی تعداد درخواست بر زمان با AspNetCoreRateLimit

محدود سازی تعداد درخواست بر زمان با AspNetCoreRateLimit در سایت dotnetLearn.comمشاهده ی دوره رایگان AspNetCoreRateLimitبه احتمال قوی شما هم تا به حال با مشکل ارسال تعداد نامحدود درخواست کاربران مواجه شده اید و ممکنه حتی تلاش های زیادی نیز برای رفع این مشکل انجام داده باشید حالا یا موفق شده اید تا حدودی جلوی این کار را بگیرید یا با مشکلاتی مواجه شده اید که کلا بیخیال این قضیه شده اید. در این دوره میخوام پکیجی را به شما معرفی کنم که بسیار قدرتمند و کامل این مشکل را برای شما حل میکند و در عین حال بسیار سبک هم هست پس به هیچ عنوان نگران بار اضافی روی سرور نباشید.اسم این پکیج AspNetCoreRateLimit هست. طرز کارAspNetCoreRateLimit بدین صورت است که شما تمامی تنظیمات و قوانین و سیاست های مد نظرتان را در فایل appsetting.json مینویسید و بقیه ی کار را به این میان افزار می سپارید.و اما چرا باید از این ابزار استفاده کنیم؟جلوگیری از ارسال تعداد درخواست های زیاد به سرور در سطح نرم افزارجلوگیری از کاهش سرعت سایت به علت جلوگیری از ارسال درخواست های اضافیجلوگیری از حمله ی Dictionary Attack (یافتن کلمه عبور با استفاده از فرهنگ لغت و تست های مکرر)کنترل بیشتر روی درخواست های ارسال شده به سروراز جمله امکانات بسیار قدرتمندی که میتوان به آن اشاره کرد قابلیت های زیر هستند:توانایی تعیین لیست سفید برای IP های خاص (برای مثال خزنده های گوگل)با استفاده از این قابلیت میتوانید برخی از IP ها را نادیده بگیرید و قوانین و سیاست ها را برای آن ها در نظر نگیرید از جمله ی این IP ها میتوان به IP موتورهای جستوجوگر اشاره کرد که اگر آن ها را محدود کنیم ممکن است روی سئوی سایت تاثیر منفی داشته باشد.توانایی تعیین لیست سفید برای Endpoint های خاصدر حالات مختلف (GET, POST, PUT و ...)شاید برخی از صفحات سایت یا برخی از WebApi ها را بخواهیم نادیده بگیریم و یا حتی آنها را فقط در متدهای خاصی نادیده بگیریم با استفاده ازAspNetCoreRateLimit این کار به راحتی امکان پذیر میباشد.توانایی استفاده از رنج IPوقتی تعداد IP های مدنظر در یک Rule خاص زیاد هست و همه ی آنها نیز در یک رنج خاص قرار دارند میتوانید با استفاده از این قابلیت کدها را زیاد شلوغ نکنید و فقط رنج IP را به آن بدهید و بقیه ی کار را بهAspNetCoreRateLimit بسپارید.توانایی ایجاد قوانین برای Endpointهابه صورت اختصاصی و عمومیشاید قصد داشته باشید که یک صفحه یا WebApi را به صورت کامل در لیست سفید قرار ندهید و فقط قوانین و سیاست های استفاده از آن ها متفاوت باشد با استفاده از این قابلیت میتوانید به راحتی قوانین و سیاست های اختصاصی برای Endpoint های مدنظر درست کنید.توانایی تعیین محدودیت در زمان های مختلف (ثانیه، دقیقه، ساعت و ...)شما میتوانید تعیین کنید که هر کاربر در یک زمان مشخص میتواند چند درخواست به سمت سرور ارسال کند و درصورتی که از حد تعیین شده تجاوز کرد با چه کد وضعیتی رو به رو شود. برای مثال هر کاربر در هر پنج ثانیه فقط میتوانید 15 درخواست به سمت سرور ارسال کند که البته زمان میتواند برحسب دقیقه یا ساعت هم باشد.استفاده از Regular Expressionممکن هست که بخوایید که فقط Endpoint هایی که در ادرس آنها شرایط و یا کلمات خاصی هست یکسری قوانین برای آن ها لحاظ شود که میتوانید با استفاده از Regular Expression به مقصود خود برسید.توانایی تعیین لیست سفید برای Device های مختلفزمانی که از WebApi استفاده میکنید شاید بخواهید دستگاه هایی که نرم افزارهای شرکت خودتان را میزبانی میکنند از این قوانین مستثنا باشید که به راحتی میتوانید در Header درخواست آن ها شناسه دستگاه را قرار دهید تا AspNetCoreRateLimit بتواند آن دستگاه ها را بشناسد و همچنین آن ها را نادیده بگیردقابلیت آبدیت قوانین و سیاست ها در زمان اجرای سایتشاید به دلایلی بخواهید در زمان اجرای نرم افزار قوانین و سیاست ها را تغییر دهید که AspNetCoreRateLimit این قابلیت را فراهم آورده و میتواند از آن بهره بگیرد.استفاده از Redis برای نگهداری شمارنده ها و قوانیناگر منابع محدودی دارید و نمیتوانید برای نگهداری شمارنده ها و اطلاعات کاربران از MemoryCacheاستفاده کنید اینجاست که Redis به کمک شما خواهد آمد و میتوانید از آن برای نگهداری اطلاعات و داده های خود استفاده کنید تا حافظه ی RAM سرور دچار مشکل نشود.شخصی سازی پیغام های سیستمشما به راحتی میتوانید پیغام های سیستم را سفارشی سازی کنید برای مثال آن ها را ترجمه کنید یا تغییر دهیدمشاهده ی دوره رایگان محدودسازی تعداد درخواست بر زمان با AspNetCoreRateLimit