ルート定義ファイルroutes/web.php
にレート制限をかけるミドルウェアを適応させて、セキュリティの向上を図りたいと思います。アクセスの回数制限を設定したい場合に有効です。
レート制限の書き方
Route::middleware
メソッドにthrottle
ミドルウェアを指定してください。このthrottle
ミドルウェアは「時間内に許す最大リクエスト数」と「時間」の2つを指定します。
routes/web.php
Route::middleware('auth:api', 'throttle:60,1')->group(function () {
Route::get('/user', function () {
//
});
});
上記の例のコードでは、1分間に60回のアクセスを許可するルートになります。
動的レート制限の書き方
もし、認証済みのモデルの中に、最大リクエスト属性がある場合には、その値を動的に最大リクエスト数に適応することもできます。
routes/web.php
Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
Route::get('/user', function () {
//
});
});
例えば、認証したモデルにrate_limit
属性があり、値を持っている場合、その値がthrottle
ミドルウェアのrate_limit
に渡されるという感じです。