[Laravel 5.4] Web Route Throttle
Laravel 預設的 throttle middleware 只有在 api 的 route 有統一加上,如果 web route 想用的話也可以自行加入。
例如:10 分鐘只能連線 5 次。
全部的 web route 都加。

不過我測試下來發現,他好像一定會噴這個字串,做一個 429 的 error view 也沒啥作用。所以如果想要自訂文案和畫面的話可能要另外寫一個 class 去繼承 ThrottleRequests,並改寫 buildResponse 方法,然後把 web route 改成新的,不過這部分我就沒測了。
例如:10 分鐘只能連線 5 次。
全部的 web route 都加。
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
'throttle:5,10',
],
'api' => [
'throttle:60,1',
'bindings',
],
];
特定的 route group 才加。Route::group(['middleware' => 'throttle:5,10'], function () {
Route::get('/testThrottle', function () {
return 'ok';
})->middleware('throttle:5,10');
});
特定的 route 才加。Route::get('/testThrottle', function () {
return 'ok';
})->middleware('throttle:5,10');
成功會回傳 ok;失敗會回傳 Too Many Attempts. 錯誤代碼 429。
不過我測試下來發現,他好像一定會噴這個字串,做一個 429 的 error view 也沒啥作用。所以如果想要自訂文案和畫面的話可能要另外寫一個 class 去繼承 ThrottleRequests,並改寫 buildResponse 方法,然後把 web route 改成新的,不過這部分我就沒測了。
留言
張貼留言