关于php:laravel8更新之速率限制改进

38次阅读

共计 962 个字符,预计需要花费 3 分钟才能阅读完成。

原文地址:https://www.wjcms.net/archive…

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 () {//});
});

正文完
 0