我正在使用Throttling,我注意到你可以在特定的时间内允许数量请求,但我正在尝试做一些不同的事情
如果我设置Throttling 60:1
所以每分钟允许发送60个请求
但是有可能让它像这样的节流60:1:30
就好像用户在一分钟内提出60请求然后阻止他30分钟
自定义油门中间件
如果我们想将其限制为每分钟5次尝试。
Route::group(['prefix' => 'api', 'middleware' => 'throttle:5'], function () {
Route::get('people', function () {
return Person::all();
});
});
如果我们想改变它,那么,如果有人达到极限,他们就不能再试一次10分钟了。
Route::group(['prefix' => 'api', 'middleware' => 'throttle:5,10'], function () {
Route::get('people', function () {
return Person::all();
});
});
更新
您需要在db banned_at中添加日期时间标志,并在达到速率限制时设置它。通过在当前日期时间加30分钟来设置该日期时间,并在用户通过中间件帮助访问路径时进行比较。当用户在速率限制到达的30分钟内访问时,db banned_at中的日期时间将大于当前时间,并且在这种情况下您可以阻止他。
更新
还有另一种方法,看看你是否可以在RateLimiter类中设置$ key变量https://github.com/laravel/framework/blob/5.3/src/Illuminate/Cache/RateLimiter.php#L38,我找不到设置它的方法
希望这对你有所帮助。