laravel 頻率限制throttle


在 Laravel 5.6 中,還引入了頻率限制功能。所謂頻率限制,指的是在指定時間單個用戶對某個路由的訪問次數限制,該功能有兩個使用場景,一個是在某些需要驗證/認證的頁面限制用戶失敗嘗試次數,提高系統的安全性,另一個是避免非正常用戶(比如爬蟲)對路由的過度頻繁訪問,從而提高系統的可用性,此外,在流量高峰期還可以借助此功能進行有效的限流。

在 Laravel 中該功能通過內置的 throttle 中間件來實現,該中間件接收兩個參數,第一個是次數上限,第二個是指定時間段(單位:分鍾):

Route::middleware('throttle:60,1')->group(function () { Route::get('/user', function () { // }); });

以上路由的含義是一分鍾能只能訪問路由分組的內路由(如 /user)60 次,超過此限制會返回 429 狀態碼並提示請求過於頻繁。

如果你覺得這種靜態設置頻率的方式不夠靈活,還可以通過模型屬性來動態設置頻率,例如,我們可以為上述通過 throttle 中間件進行分組的路由涉及到的模型類定義一個 rate_limit 屬性,然后這樣來動態定義這個路由:

Route::middleware('throttle:rate_limit,1')->group(function () { Route::get('/user', function () { // 在 User 模型中設置自定義的 rate_limit 屬性值 }); Route::get('/post', function () { // 在 Post 模型中設置自定義的 rate_limit 屬性值 }); });

這樣,我們就可以通過為不同的模型類設置不同的 rate_limit 屬性值來達到動態設置頻率限制的效果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM