为了提高网站的响应速度,降低服务器的负载,我们经常需要对服务器加防护
所谓频率限制,指的是在`指定时间单个用户`对某个路由的访问次数限制
比如限制对一个网址的访问频率
我们可以使用`fail2ban`、`iptable`s以及`nginx`的`limit`模块
在 Laravel 中如何实现呢?
我们可以通过内置的 `throttle` 中间件来实现,该中间件接收两个参数,第一个是次数上限,第二个是指定时间段(单位:分钟):
>Route::middleware('throttle:10,1')->group(function () {
Route::get('/user', 'Api\\UserController@index');
});
以上路由的含义是一分钟能只能访问路由分组的内路由(如 /user)10 次,超过此限制会返回 429 状态码并提示请求过于频繁。