Existe-t-il un moyen de désactiver la limitation de débit sur chaque parcours/individuel à Laravel?
J'essaie de tester un ordinateur d'extrémité qui reçoit beaucoup de demandes, mais de manière aléatoire, Laravel commencera à répondre avec { status: 429, responseText: 'Too Many Attempts.' }
pour quelques centaines de demandes, ce qui rend le test extrêmement pénible.
Dans app/Http/Kernel.php
, Laravel a une limite d’accélération par défaut pour toutes les routes api.
protected $middlewareGroups = [
...
'api' => [
'throttle:60,1',
],
];
Commentez ou augmentez.
En supposant que vous utilisiez les routes de l’API, vous pouvez modifier le régulateur dans app/Http/Kernel.php ou le supprimer complètement. Si vous devez limiter les autres itinéraires, vous pouvez enregistrer le middleware séparément.
(exemple ci-dessous: accélérateur - 60 tentatives puis verrouillé pendant 1 minute)
'api' => [
'throttle:60,1',
'bindings',
],
Si vous souhaitez désactiver uniquement les tests automatisés, vous pouvez utiliser le trait WithoutMiddleware
sur vos tests.
use Illuminate\Foundation\Testing\WithoutMiddleware;
class YourTest extends TestCase {
use WithoutMiddleware;
...
Sinon, supprimez simplement la ligne 'throttle:60,1',
de votre fichier Kernel file (app/Http/Kernel.php
) et votre problème sera résolu.
À Laravel 5.7
Dynamic Rate Limiting Vous pouvez spécifier un nombre maximal de requêtes dynamiques en fonction d'un attribut du modèle d'utilisateur authentifié. Par exemple, si votre modèle User contient un attribut rate_limit, vous pouvez en transmettre le nom au middleware de régulation afin qu'il soit utilisé pour calculer le nombre maximal de requêtes:
Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
Route::get('/user', function () {
//
});
});
Vous pouvez réellement désactiver seulement un certain middleware dans les tests.
use Illuminate\Routing\Middleware\ThrottleRequests;
class YourTest extends TestCase
{
protected function setUp()
{
parent::setUp();
$this->withoutMiddleware(
ThrottleRequests::class
);
}
...
}