【问题标题】:Laravel Rate limit api by user with basic auth具有基本身份验证的用户的 Laravel 速率限制 api
【发布时间】: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


    【解决方案1】:

    RouteServiceProvider.php:

     /**
     * Configure the rate limiters for the application.
     *
     * @return void
     */
    protected function configureRateLimiting()
    {
    RateLimiter::for('getRequest', function (Request $request) {
        
    

    dd(auth()->check());

        return Limit::perMinute(2)->by($request->user()->id)->response(function(){
            
            return response()->json([
                'response' => 'failed',
                'message' => 'Too many request has been made',
            ],429);
        });
    });
    }
    

    首先检查登录用户

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2021-05-30
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多