【发布时间】:2021-10-10 11:26:35
【问题描述】:
我正在尝试使用 api.php 中的基本身份验证在 api 路由上设置用户的速率限制,但似乎身份验证用户信息没有被传递给 RateLimiter,因为我收到错误“尝试读取属性id 为空”。这是我在 configureRateLimit() 上的代码
RouteServiceProvider.php:
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('getRequest', function (Request $request) {
return Limit::perMinute(2)->by($request->user()->id)->response(function(){
return response()->json([
'response' => 'failed',
'message' => 'Too many request has been made',
],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 时显示正常
【问题讨论】:
标签: php laravel api rate-limiting