W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Laravel 包含功能強(qiáng)大且可自定義的限流服務(wù),您可以利用這些服務(wù)來(lái)限制給定的路由或一組路由的流量。首先,您應(yīng)該定義滿足應(yīng)用需求的限流器配置。通常,這可以寫(xiě)在應(yīng)用程序的 RouteServiceProvider
中。
限流器可以使用 RateLimiter
門(mén)面的 for
方法定義。 for
方法接受一個(gè)速率限制器名稱(chēng)和一個(gè)閉包會(huì)返回限制配置,該配置可以應(yīng)用于分配了該限流器的路由:
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
如果傳入的請(qǐng)求速率超過(guò)了設(shè)置的請(qǐng)求頻率,Laravel 會(huì)自動(dòng)的響應(yīng) HTTP 429 的狀態(tài)碼。如果你想自定義響應(yīng)內(nèi)容,使用 response
方法:
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000)->response(function () {
return response('Custom response...', 429);
});
});
Laravel 提供了使用 $request 實(shí)例調(diào)取參數(shù),如 user () 來(lái)進(jìn)行身份驗(yàn)證從而自定義請(qǐng)求頻率的大小或是否限制。
RateLimiter::for('uploads', function (Request $request) {
return $request->user()->vipCustomer()
? Limit::none()
: Limit::perMinute(100);
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: