Rate limiting
This commit is contained in:
@@ -3,8 +3,11 @@
|
||||
namespace App\Providers;
|
||||
|
||||
use Carbon\CarbonImmutable;
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
use Illuminate\Support\Facades\Date;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\RateLimiter;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
@@ -23,6 +26,13 @@ class AppServiceProvider extends ServiceProvider
|
||||
public function boot(): void
|
||||
{
|
||||
$this->configureDefaults();
|
||||
|
||||
RateLimiter::for('training', function (Request $request) {
|
||||
return [
|
||||
Limit::perMinute(50),
|
||||
Limit::perMinute(15)->by($request->ip()),
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -109,6 +109,12 @@ function startTraining() {
|
||||
})
|
||||
.then((response) => {
|
||||
if (!response.ok) {
|
||||
if (response.status === 429) {
|
||||
alert('Trop de requêtes pour mon petit serveur. Veuillez réessayer dans une minute.');
|
||||
} else {
|
||||
alert('Erreur lors du lancement de l\'entraînement. Veuillez réessayer.');
|
||||
}
|
||||
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
|
||||
+3
-1
@@ -3,4 +3,6 @@
|
||||
use App\Http\Controllers\PerceptronController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::post('perceptron/run', [PerceptronController::class, 'run'])->name('perceptron.run');
|
||||
Route::middleware('throttle:training')->group(function () {
|
||||
Route::post('perceptron/run', [PerceptronController::class, 'run'])->name('perceptron.run');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user