Quay lại
Rate limit route requests trong Laravel

Là một backend developers, để làm cho ứng dụng web của chúng ta không có lỗi, chúng ta cần đảm bảo rằng ứng dụng của chúng ta luôn chạy hiệu quả nhất có thể. Nếu không, mọi người sử dụng cơ sở dữ liệu của bạn sẽ bị chậm hiệu suất. Giới hạn API, còn được gọi là rate limiting (giới hạn truy cập), là một thành phần thiết yếu của bảo mật Internet, vì các cuộc tấn công DoS DoS attacks có thể làm hỏng máy chủ với các yêu cầu API không giới hạn.

Rất may, Laravel giúp bạn giải quyết vấn đề này. Trong Laravel, bạn có thể đạt được giới hạn truy cập bằng cách sử dụng middleware có tên là throttle có sẵn trong Laravel. Bạn cần chỉ định middleware này cho route hoặc group of routes

Về cơ bản, middleware chấp nhận hai tham số, cụ thể là “number of requests” và “duration of time”, xác định số lượng yêu cầu tối đa có thể được thực hiện trong một số phút nhất định.

Basic example

Bạn có thể chỉ định một middleware cho một route như bên dưới:

Route::get('admin/profile', function () {
    //
})->middleware('auth', 'throttle:30,1');

Như bạn có thể thấy, cấu hình route ở trên sẽ cho phép người dùng xác thực truy cập route 30 lần mỗi phút. Nếu người dùng vượt quá giới hạn này trong khoảng thời gian đã chỉ định, Laravel sẽ trả về 429 Too Many Requests với các tiêu đề phản hồi sau.

x-ratelimit-limit: 2
x-ratelimit-remaining: 0
x-ratelimit-reset: 1566834663

Rate limit on route groups

Tương tự, bạn có thể áp dụng giới hạn tốc độ cho một nhóm route như bên dưới.

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

Dynamic Rate Limiting

Để làm cho "number of requests" động dựa trên model attribute.. Đây là cách bạn có thể làm như vậy.

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

Ở đây rate_limit là một thuộc tính của User model có thể được sử dụng để tính số lượng request tối đa cho nhóm route được đề cập.

 

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday