Есть ли способ использовать дроссель Laravel api для отдельных методов внутри контроллера? - PullRequest
2 голосов
/ 27 июня 2019

Я использую api throttle в моем routes/api.php (как вы можете видеть в коде), но мне интересно, могу ли я использовать его в контроллере для методов.

Route::resource('/user/{user}/post', 'UserPostController')->middleware(['auth:api', 'throttle:5,1']);

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Лучше использовать маршруты для указания промежуточного программного обеспечения для маршрутов.Тем не менее, вы думаете, чтобы использовать / указать внутри вашего контроллера, вы можете определить __construct() метод в вашем контроллере, например:

public function __construct()
{
    $this->middleware('throttle:5,1')->only('index');
}

Это будет работать только для действия index вашего контроллера.

Более подробную информацию смотрите в документации Промежуточное программное обеспечение контроллера

1 голос
/ 27 июня 2019

Вы можете переопределить маршрут, например

Route::resource('/user/{user}/post', 'UserPostController')->middleware(['auth:api', 'throttle:5,1']);

// добавить маршрут после ресурса

Route::get('/user/create', 'UserPostController@create')->middleware(['auth:api', 'throttle:5,1']);

второй способ добавить условие в контроллер

public function __construct()
{
   $this->middleware('auth:api');
   $this->middleware('throttle:10,1')->only('create');
}
...