2016-01-17 68 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