Bất cứ khi nào bạn phát triển một ứng dụng dựa trên Laravel để đưa nó vào sản xuất, bạn có thể sẽ cung cấp một số loại API. Hoặc để sử dụng nội bộ hoặc cho khách hàng tiêu thụ. Tuy nhiên, rất có thể bạn muốn cài đặt một số loại cơ chế giới hạn tốc độ để đảm bảo không ai lạm dụng API của bạn và do đó có nguy cơ phá hủy cơ sở hạ tầng lưu trữ của bạn
Laravel bao gồm một trừu tượng hóa giới hạn tốc độ đơn giản để sử dụng, kết hợp với bộ đệm của ứng dụng của bạn, cung cấp một cách dễ dàng để hạn chế bất kỳ hành động nào trong một khoảng thời gian cụ thể
Lưu ý
Nếu bạn quan tâm đến tốc độ giới hạn các yêu cầu HTTP đến, vui lòng tham khảo.
Cấu hình bộ đệm
Thông thường, bộ giới hạn tốc độ sử dụng bộ đệm ứng dụng mặc định của bạn như được xác định bởi khóa
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
5 trong tệp cấu hình use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
6 của ứng dụng của bạn. Tuy nhiên, bạn có thể chỉ định trình điều khiển bộ đệm mà bộ giới hạn tốc độ sẽ sử dụng bằng cách xác định khóa use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
7 trong tệp cấu hình use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
6 của ứng dụng của bạnSử dụng cơ bản
Mặt tiền
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
9 có thể được sử dụng để tương tác với bộ giới hạn tốc độ. Phương pháp đơn giản nhất được cung cấp bởi bộ giới hạn tốc độ là phương pháp use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
0, phương pháp này giới hạn tốc độ một cuộc gọi lại nhất định trong một số giây nhất địnhPhương thức
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
0 trả về use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
2 khi cuộc gọi lại không còn lần thử nào nữa; . Đối số đầu tiên được phương thức use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
0 chấp nhận là "khóa" giới hạn tốc độ, có thể là bất kỳ chuỗi nào bạn chọn đại diện cho hành động bị giới hạn tốc độuse Illuminate\Support\Facades\RateLimiter;
$executed = RateLimiter::attempt[
'send-message:'.$user->id,
return 'Too many messages sent!';
Số lần tăng thủ công
Nếu bạn muốn tương tác thủ công với bộ giới hạn tốc độ, có sẵn nhiều phương pháp khác. Ví dụ: bạn có thể gọi phương thức
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
6 để xác định xem một khóa giới hạn tốc độ đã cho có vượt quá số lần thử tối đa được phép mỗi phút hay khônguse Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
Ngoài ra, bạn có thể sử dụng phương pháp
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
7 để truy xuất số lần thử còn lại cho một khóa nhất định. Nếu một khóa nhất định vẫn còn số lần thử lại, bạn có thể gọi phương thức use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
8 để tăng tổng số lần thửuse Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
1Xác định tính khả dụng của bộ giới hạn
Khi một phím không còn lần thử nào nữa, phương thức
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
9 trả về số giây còn lại cho đến khi có nhiều lần thử hơnuse Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
3Nỗ lực thanh toán bù trừ
Bạn có thể đặt lại số lần thử cho một khóa giới hạn tốc độ nhất định bằng phương pháp
use Illuminate\Support\Facades\RateLimiter;
if [RateLimiter::tooManyAttempts['send-message:'.$user->id, $perMinute = 5]] {
return 'Too many attempts!';
10. Ví dụ: bạn có thể đặt lại số lần thử khi người nhận đọc một tin nhắn nhất định