当使用ab测试工具测试接口的时候
在日志里看到了很多Too Many Attempts的错误
这是因为laravel的限流中间件在起作用
api路由组默认就有在使用限流中间件
app/Http/Kernel.php
'api' => [ 'throttle:api', IlluminateRoutingMiddlewareSubstituteBindings::class, ],
throttle就是限流中间件,:冒号后面的是传递的参数“api”
'throttle:api', 可以把这个去掉
'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
protected $routeMiddleware = [ 'auth' => AppHttpMiddlewareAuthenticate::class, 'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class, 'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class, 'can' => IlluminateAuthMiddlewareAuthorize::class, 'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class, 'password.confirm' => IlluminateAuthMiddlewareRequirePassword::class, 'signed' => IlluminateRoutingMiddlewareValidateSignature::class, 'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class, 'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class, ];
"api" 就是限流的一个key
appProvidersRouteServiceProvider.php
protected function configureRateLimiting() { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); }); }
根据ip限制,每分钟60次