我正在使用节流功能,我注意到您可以允许每指定时间的数量请求,但是我正在尝试做一些不同的事情
如果我将节流设置为60:1
因此允许每1分钟发送60个请求
但是有可能像这样节流60:1:30
就像用户在一分钟内发出60个请求,然后阻止他30分钟
答案 0 :(得分:0)
定制油门中间件
如果我们希望将其限制为每分钟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中的日期时间将大于当前时间,在这种情况下,您可以阻止他。
更新
还有另一种方法,看看是否可以在https://github.com/laravel/framework/blob/5.3/src/Illuminate/Cache/RateLimiter.php#L38的RateLimiter类中设置$ key变量,我找不到设置它的方法
希望这对您有所帮助。