Php Laravel 5.2中的API节流阀

Php Laravel 5.2中的API节流阀,php,laravel,Php,Laravel,我在看Laravel 5.2中的油门 throttle似乎只是用于API,但为什么不能用于其他控制器的东西,以避免人们通过邮递员发送100次相同的表单 我这样说是因为在Kernel.php中,现在中间件被明确地划分为web和API:您也可以将其应用于web页面。从您的评论来看,您对中间件的新特性感到困惑,主要是 5.2带来了一种对中间件进行分组的方法,就像以前对路由组进行分组一样。在5.1中,您可以执行以下操作: Route::group(['prefix' => 'api', 'midd

我在看Laravel 5.2中的油门

throttle似乎只是用于API,但为什么不能用于其他控制器的东西,以避免人们通过邮递员发送100次相同的表单


我这样说是因为在Kernel.php中,现在中间件被明确地划分为web和API:

您也可以将其应用于web页面。从您的评论来看,您对中间件的新特性感到困惑,主要是

5.2带来了一种对中间件进行分组的方法,就像以前对路由组进行分组一样。在5.1中,您可以执行以下操作:

Route::group(['prefix' => 'api', 'middleware'=>'auth,custom_middleware,permission:edit_permissions'], function() {
    Route::post('permissions/{id}/store', ['uses'=>'PermissionController@store']);
});
这仍然是完全有效的,但是如果您想使用相同的中间件添加另一个路由组,您必须改变组织,使它们嵌套在应用这些中间件的单个路由组下,或者您必须复制粘贴中间件,这两种方法都不是很理想。对于5.2,您所需要做的就是:

Kernel.php

protected $middlewareGroups = [
    'permissions_api' => [
         'auth', 
         'custom_middleware',
         'permission:edit_permissions',
     ]
];

routes.php

Route::group(['middleware' => ['permissions_api']], function () {
    Route::post('permissions/{id}/store', ['uses'=>'PermissionController@store']);
});

Route::group(['middleware' => ['permissions_api']], function () {
    Route::post('permissions/{id}/update', ['uses'=>'PermissionController@update']);
});
因此,您可以对这些中间件进行分组,并在这些组中应用它们。这就是您看到的
api
web
的内容。这只是Laravel提供的默认中间件组,您可以根据需要进行修改
throttle
可作为中间件在您需要时随时提供。以下两项都是完全有效的

Route::group(['middleware' => ['throttle:60,1']], function () {
    Route::post('permissions/{id}/update', ['uses'=>'PermissionController@update']);
});


所以
throttle
只是一个中间件,可以像任何中间件一样应用。它在
Kernel.php
中定义为
'throttle'=>\illumb\Routing\Middleware\ThrottleRequests::class,
60,1
只是中间件参数,它们是在5.1中添加的,它只是一个中间件,因此可以附加到任何路由/控制器,而不管该路由是否用于API。它仅仅限制了一个IP地址在一段时间内击中一组路由的次数。所以它可以被用来限制表单的提交,就像你建议的那样,100次。但我想说的是,它似乎只被设计用于API,我不明白这个决定为什么你这么说?尽管Laravel的很多用户都使用它来创建API,但老实说,任何支持API开发的决策都是有意义的。
protected $middlewareGroups = [
    'permissions_api' => [
         'auth', 
         'custom_middleware',
         'permission:edit_permissions',
         'throttle:60,1'
     ] 
];