Hãy nhìn vào chúng ta có thể sử dụng rate limiting như thế nào trong một ứng dụng
Laravel.
Hạn chế tỷ lệ truy cập toàn cục
Để áp dụng một rate limit toàn cục tới tất cả các routes, bạn có thể thêm throttle middleware
tới nhóm middleware web trong file app/Http/Kernel.php:
protected $middlewareGroups = [
‘web’ => [
// …
‘throttle:60,1’ , // All routes can be accessed
60 times per minute
],
//
];
Hạn chế tỷ lệ truy cập tuỳ theo route
Nếu bạn muốn hạn chế tỷ lệ yêu cầu tới một route cụ thể, bạn có thể sử dụng throttle middleware
trực tiếp trên route đó:
Route::middleware( ‘throttle:30,1’ )->get( ‘/api/search’
, function () {
// This route can be accessed 30 times per minute
});
Rate Limiting động
Trong một bối cảnh nơi bạn muốn các dạng người dùng khác nhau để có hạn chế tỷ lệ truy cập khác nhau,bạn
có thể sử dụng rate limiting động. Giả sử bạn có một User model với một thuộc
tính rate_limit:
Route::middleware( ‘auth:api’ , ‘throttle:rate_limit,1’
)->get( ‘/api/user’ , function () {
// This route can be accessed a number of times
equal to the rate_limit attribute of the authenticated
user per minute
});
Phù hợp hoá theo yêu cầu các trả lời hạn chế tỷ lệ truy cập
Cuối cùng, bạn có thể phù hợp hoá theo yêu cầu trả lời được trả về tới máy khách khi chúng chạm rate limit.
Trong RouteServiceProvider của bạn, bạn có thể định nghĩa một rate limiter:
use Illuminate \ Cache \ RateLimiting \ Limit ;
use Illuminate \ Support \ Facades \ RateLimiter ;
public function boot ()
{
parent ::boot();
RateLimiter::for( ‘global’ , function (Request
$request) {
return Limit::perMinute( 1000 )->response(
function () {
return response( ‘Custom Rate Limit
Exceeded’ , 429 );
});
});
}
Bây giờ khi rate limiter toàn cục được châm ngòi, máy khách sẽ nhận một trả lời với một code trạng thái
429 và thông điệp ‘Custom Rate Limit Exceeded’.