2017-10-13 20 views
5

Có ai có thông tin về cách triển khai phần mềm trung gian ThrottleRequest trong Laravel 5.5 không?Laravel 5.5 ThrottleRequest middleware

Tôi không rõ ràng về ý nghĩa của các tham số decayMinutes đặc biệt: https://laravel.com/api/5.5/Illuminate/Routing/Middleware/ThrottleRequests.html

Tôi hiểu làm thế nào để áp dụng nó vào một con đường, tôi chỉ không chắc chắn những gì các thông số reaosnable sẽ.

Trả lời

2

decayMinutes - đó là thời gian trong giới hạn của bạn sẽ được tính. Giới hạn về mặt kỹ thuật là giá trị với TTL (Thời gian hoạt động) $decayMinutes * 60 giây trong bộ nhớ cache tăng lên trên mỗi lần truy cập. Khi TTL tự động vượt quá giá trị sẽ bị hủy trong bộ nhớ cache và số lần truy cập mới sẽ bắt đầu.

Nhìn vào RateLimit::hit() mã. Nó khá rõ ràng:

/** 
* Increment the counter for a given key for a given decay time. 
* 
* @param string $key 
* @param float|int $decayMinutes 
* @return int 
*/ 
public function hit($key, $decayMinutes = 1) 
{ 
    $this->cache->add(
     $key.':timer', $this->availableAt($decayMinutes * 60), $decayMinutes 
    ); 
    $added = $this->cache->add($key, 0, $decayMinutes); 
    $hits = (int) $this->cache->increment($key); 
    if (! $added && $hits == 1) { 
     $this->cache->put($key, 1, $decayMinutes); 
    } 
    return $hits; 
} 

Nếu bạn muốn giới hạn một số hoạt động 10 lượt truy cập mỗi 5 phút, hơn decayMinutes phải 5.

6

Tôi hiểu decayMinutes là thời gian lưu giữ. Đối với ý định, nếu bạn muốn cung cấp cho một 10 cố gắng để đăng nhập với mật khẩu sai, nhưng nếu anh ta cố gắng 11 lần, người dùng bị chặn cho số phút được chỉ định trong decayMinutes. Nếu bạn chỉ định 10 phút là decayMinutes, người dùng sẽ bị chặn trong 10 phút

+1

Từ khi đọc mã nguồn, đây là sự hiểu biết của tôi quá. – fubar

+2

Đây là câu trả lời sai. 'decayMinutes' (trong Laravel 5.5) không phải là một khối thời gian. –

+1

Tôi đoán thời gian chặn đăng nhập là một ví dụ và nó hoạt động chủ yếu theo cùng một cách để điều chỉnh. Chỉ cần thay thế 'nỗ lực đăng nhập' bằng 'url duy nhất được yêu cầu'. Nếu bạn không thực hiện bất kỳ trang hoặc api yêu cầu cho $ decayMinutes phút sau đó bộ đếm ga reset. –

Các vấn đề liên quan