gpt4 book ai didi

php - Laravel 5.2 中的 API 限制

转载 作者:可可西里 更新时间:2023-11-01 00:41:39 27 4
gpt4 key购买 nike

我看到了 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']);
});

因此您可以将这些中间件分组并在这些组中应用它们。这就是您看到的 apiweb。它只是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com