Rate limiting
This commit is contained in:
@@ -3,8 +3,11 @@
|
|||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use Carbon\CarbonImmutable;
|
use Carbon\CarbonImmutable;
|
||||||
|
use Illuminate\Cache\RateLimiting\Limit;
|
||||||
use Illuminate\Support\Facades\Date;
|
use Illuminate\Support\Facades\Date;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\RateLimiter;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
@@ -23,6 +26,13 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
$this->configureDefaults();
|
$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) => {
|
.then((response) => {
|
||||||
if (!response.ok) {
|
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');
|
throw new Error('Network response was not ok');
|
||||||
}
|
}
|
||||||
return response.json();
|
return response.json();
|
||||||
|
|||||||
@@ -3,4 +3,6 @@
|
|||||||
use App\Http\Controllers\PerceptronController;
|
use App\Http\Controllers\PerceptronController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
Route::middleware('throttle:training')->group(function () {
|
||||||
Route::post('perceptron/run', [PerceptronController::class, 'run'])->name('perceptron.run');
|
Route::post('perceptron/run', [PerceptronController::class, 'run'])->name('perceptron.run');
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user