API ограничения скорости Laravel для пользователя с базовой аутентификацией ⇐ Php
-
Anonymous
API ограничения скорости Laravel для пользователя с базовой аутентификацией
Я пытаюсь установить ограничение скорости для пользователя на маршруте API, используя базовую аутентификацию в api.php, но кажется, что информация пользователя для аутентификации не передается в RateLimiter, как я получаю ошибка:
"Попытка прочитать идентификатор свойства при нулевом значении".
Вот мой код для configureRateLimit():
RouteServiceProvider.php:
/** * Настройте ограничители скорости для приложения. * * @return void */ защищенная функция configureRateLimiting() { RateLimiter::for('getRequest', function (Request $request) { return Limit::perMinute(2)->by($request->user()->id)->response(function(){ вернуть ответ()->json([ 'ответ' => 'не удалось', 'message' => 'Сделано слишком много запросов', ],429); }); }); } Маршрут api.php:
Route::middleware(['auth.basic.once'])->prefix('v1')->group(function() { Route::middleware(['throttle:getRequest'])->get('/animals/{id?}', [animalsApiController::class, 'show']); }); Вместо этого я пытался использовать Auth::user()->id, user()->id() и Auth::id() из $request->user()->id, но та же ошибка. Может кто-нибудь сказать мне, делаю ли я что-то не так или что-то упускаю?
Примечание: при проверке $request->user()->id в контроллере все отображается нормально.
Я пытаюсь установить ограничение скорости для пользователя на маршруте API, используя базовую аутентификацию в api.php, но кажется, что информация пользователя для аутентификации не передается в RateLimiter, как я получаю ошибка:
"Попытка прочитать идентификатор свойства при нулевом значении".
Вот мой код для configureRateLimit():
RouteServiceProvider.php:
/** * Настройте ограничители скорости для приложения. * * @return void */ защищенная функция configureRateLimiting() { RateLimiter::for('getRequest', function (Request $request) { return Limit::perMinute(2)->by($request->user()->id)->response(function(){ вернуть ответ()->json([ 'ответ' => 'не удалось', 'message' => 'Сделано слишком много запросов', ],429); }); }); } Маршрут api.php:
Route::middleware(['auth.basic.once'])->prefix('v1')->group(function() { Route::middleware(['throttle:getRequest'])->get('/animals/{id?}', [animalsApiController::class, 'show']); }); Вместо этого я пытался использовать Auth::user()->id, user()->id() и Auth::id() из $request->user()->id, но та же ошибка. Может кто-нибудь сказать мне, делаю ли я что-то не так или что-то упускаю?
Примечание: при проверке $request->user()->id в контроллере все отображается нормально.
Мобильная версия