功能描述
当请求profile路由的时候判断用户是否为vip用户,如果不是就限制每分钟请求5次,如果是就不做限制。
1.在Providers目录找到RouteServiceProvider类,在boot添加如下代码:
RateLimiter::for('global', function (Request $request) { $params = $request->all(); $isVip = User::where('id', $params['id'])->value('is_vip'); if($isVip) { return Limit::none(); } else { return Limit::perMinute(5); } });
简单说明:for后面第一个参数是速率限制器名称,第二个参数是一个闭包。
2.定义路由
Route::middleware(['throttle:global'])->group(function () { Route::get('profile', [IndexController::class, 'test']); });
简单说明:中间件throttle后跟着的是速率限制器名称。