Готовым решением, если вы используете версию> = 5.6, является использование динамического ограничения скорости .
Динамическое ограничение скорости
Вы можете указать максимум динамического запроса на основе атрибута модели аутентифицированного пользователя. Например, если ваша модель пользователя содержит атрибут rate_limit, вы можете передать имя атрибута промежуточному программному обеспечению дросселя, чтобы оно использовалось для расчета максимального числа запросов:
Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
Route::get('/user', function () {
//
});
});
Соответствующая часть кода
/**
* Resolve the number of attempts if the user is authenticated or not.
*
* @param \Illuminate\Http\Request $request
* @param int|string $maxAttempts
* @return int
*/
protected function resolveMaxAttempts($request, $maxAttempts)
{
if (Str::contains($maxAttempts, '|')) {
$maxAttempts = explode('|', $maxAttempts, 2)[$request->user() ? 1 : 0];
}
if (! is_numeric($maxAttempts) && $request->user()) {
$maxAttempts = $request->user()->{$maxAttempts};
}
return (int) $maxAttempts;
}
Таким образом, вы можете добавить свойство rate_limit
в пользователя (представляющее второй сервер) и передать большее число
EDIT:
Если вы не хотите, чтобы вызывающая сторона аутентифицировалась, вы можете легко перезаписать метод resolveMaxAttempts
для динамического расчета предела на основе данных запроса (вы можете использовать любой параметр, хост, ip и т. Д.):
protected function resolveMaxAttempts($request, $maxAttempts)
{
if (in_array(request->ip(), config('app.bypassThrottleMiddleware')) {
return PHP_INT_MAX;
}
return parent::resolveMaxAttempts($request, $maxAttempts);
}
и в вашем config/app.php
добавьте:
'bypassThrottleMiddleware' => ['0.0.0.0'],