[英]API Throttle in Laravel 5.2
我在Laravel 5.2中看到了关于油门的这个教程
看起来油门只用于API,但为什么不能用于其他控制器的东西,以避免人们通过Postman发送相同形式的100倍。
我告诉你,因为在Kernel.php中,现在,中间件在web和apis之间明显划分: Kernel.php:Laravel 5.2
您也可以将其应用于网页。 从您的评论来看,您对中间件(主要是中间件组)的新功能感到困惑。
5.2带来了一种分组中间件的方法,就像之前使用Route组一样。 在5.1中你会做类似的事情:
Route::group(['prefix' => 'api', 'middleware'=>'auth,custom_middleware,permission:edit_permissions'], function() {
Route::post('permissions/{id}/store', ['uses'=>'PermissionController@store']);
});
这仍然是完全有效的,但如果你想添加另一个具有相同中间件的Route组,你必须要么组织它们,以便它们嵌套在应用这些中间件的单个Route组下面,或者你必须复制粘贴中间件,既不是可取的。 使用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']);
});
要么
protected $middlewareGroups = [
'permissions_api' => [
'auth',
'custom_middleware',
'permission:edit_permissions',
'throttle:60,1'
]
];
因此, throttle
只是一个中间件,可以像任何中间件一样应用。 它在Kernel.php
中定义为'throttle' => \\Illuminate\\Routing\\Middleware\\ThrottleRequests::class,
而60,1
只是中间件参数,在5.1中添加
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.