我看到了 this tutorial关于 Laravel 5.2 中的限制
似乎 throttle 只用于 API,但为什么不能用于其他 Controller 的东西,以避免人们通过 Postman 发送 100 次相同的表单。
我之所以这样说,是因为现在在 Kernel.php 中,中间件在 web 和 api 之间明确划分: Kernel.php:Laravel 5.2
最佳答案
您也可以将其应用于网页。从您的评论来看,您对中间件的新功能感到困惑,主要是 Middleware Groups .
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']);
});
或
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中加入
关于php - Laravel 5.2 中的 API 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660731/