2016-01-17 88 views
1

我正在使用下面的代碼實現組中所有路由的速率限制功能。Laravel 5.2中的特定路由的速率限制功能

Route::group(['middleware' => ['web', 'throttle:2']], function() { 
    Route::get('/CSR', array('uses' => '[email protected]', 'as' => 'CSRList')); 
    //Second Route 
    //Third Route 
    //Fourth Route 
    //Fifth Route 
    //.... 
}); 

問題 這個偉大的工程。有沒有什麼辦法可以在組中的任何特定路線上執行此操作?

回答

1

當然可以。您可以分配給路由組的任何屬性也可以分配給單個路由(實際上,路由組實際上僅將它們的屬性按順序應用於其中包含的每個路由,僅此而已)。所以,你可以指定一箇中間件團如api到一個單一的路線:

Route::get('/route/path', ['middleware' => 'api', 'uses' => '[email protected]']); 

或者,如果你想使用只是節流可以直接使用中間件:

Route::get('/route/path', ['middleware' => 'throttle:2', 'uses' => '[email protected]']); 

有關詳細信息的速率限制功能,您可以檢查出Laracasts視頻鏈接如下:

What's New in Laravel 5.2: API Rate Limiting

+0

費率限制功能是針對特定的IP地址,或者它對網站的所有訪問者都有效。我的意思是,讓我們說在stackoverflow.com網站的某些頁面被限制訪問每分鐘10次。假設您訪問了10次,現在當我嘗試訪問該網頁時,我將不會被允許,因爲每分鐘嘗試10次。那是對的嗎 ?或者我會分別進行10次嘗試? – Pankaj

+0

限制功能使用多個請求參數(包括IP地址),實際上中間件使用['Request :: fingerprint'](https://github.com/laravel/framework/blob/5.2/src/ Illuminate/Http/Request.php#L841-L846)方法來生成用於調節的唯一密鑰(您可以在那裏看到它用來生成指紋的參數)。這[Laracasts Video](https://laracasts.com/series/whats-new-in-laravel-5-2/episodes/2)很好地解釋了速率限制中間件的工作原理。 – Bogdan