原文地址:https://www.wjcms.net/archives/laravel8更新之速率限制改進
Laravel的請求速率限制器功能已增強,具有更大的靈活性和功能,同時仍保持與先前版本的throttle中間件API的向后兼容性,
速率限制器是使用RateLimiter立面的for方法定義的,該for方法接受一個速率限制器名稱和一個Closure,該Closure回傳應應用于分配了該速率限制器的路由的限制配置:
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
由于速率限制器回呼接收傳入的HTTP請求實體,因此您可以根據傳入的請求或經過身份驗證的用戶動態構建適當的速率限制:
RateLimiter::for('uploads', function (Request $request) {
return $request->user()->vipCustomer()
? Limit::none()
: Limit::perMinute(100);
});
有時您可能希望將速率限制按任意值進行細分,例如,您可能希望允許用戶每個IP地址每分鐘100次訪問給定路由,為此,您可以by在建立速率限制時使用以下方法:
RateLimiter::for('uploads', function (Request $request) {
return $request->user()->vipCustomer()
? Limit::none()
: Limit::perMinute(100)->by($request->ip());
});
可以使用throttle 中間件將速率限制器附加到路由或路由組,油門中間件接受您希望分配給路線的速率限制器的名稱:
Route::middleware(['throttle:uploads'])->group(function () {
Route::post('/audio', function () {
//
});
Route::post('/video', function () {
//
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/206411.html
標籤:其他


