问题描述
Route::middleware('throttle:3,1')->group(function () {
Route::get('/about',function () {
return "About Info";
});
});
Laravel 框架是 8.19.0。
理想情况下,当有人在 1 分钟内点击页面超过 3 次时,laravel 应该给出 429 Too Many Attempts Response。但事实并非如此。 3 次后我没有收到 429 响应。
如何解决这个问题?
谢谢
解决方法
转到 .env
文件并检查您的缓存驱动程序,如果 CACHE_DRIVER=none
,请设置缓存驱动程序。
Laravel 支持 支持:“apc”、“数组”、“数据库”、“文件”、
“memcached”、“redis”、“dynamodb”
我遇到了这个问题。在 config/cache.php 中,默认设置为“null”。我改为“数据库”。现在,这一切正常。
,从 Laravel 8 开始,您可以在 configureRateLimiting()
的方法 App\Providers\RouteServiceProvider
中配置速率限制。
例如:
protected function configureRateLimiting()
{
RateLimiter::for('api',function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
如果您从 Laravel 7 更新,请不要忘记在 boot()
的 RouteServiceProvider
方法中添加对方法的调用。否则将不会应用限制。
public function boot()
{
$this->configureRateLimiting();
parent::boot();
}
另见文档:https://laravel.com/docs/8.x/routing#rate-limiting 和 Laracasts 视频:https://laracasts.com/series/whats-new-in-laravel-8/episodes/9