94 votes

Désactiver le limiteur de débit dans Laravel?

Existe-t-il un moyen de désactiver la limitation de débit sur tous les itinéraires / individuels à Laravel?

J'essaie de tester un point de terminaison qui reçoit beaucoup de demandes, mais au hasard, Laravel commencera à répondre avec { status: 429, responseText: 'Too Many Attempts.' } pour quelques centaines de demandes, ce qui rend le test très difficile.

168voto

EddyTheDove Points 8797

Dans app/Http/Kernel.php Laravel a une limite de gaz par défaut pour toutes les routes api.

 protected $middlewareGroups = [
    ...
    'api' => [
        'throttle:60,1',
    ],
];
 

Commentez ou augmentez-le.

37voto

Mostafa Bahri Points 178

Vous pouvez réellement désactiver uniquement un certain middleware dans les tests.

 use Illuminate\Routing\Middleware\ThrottleRequests;

class YourTest extends TestCase 
{

    protected function setUp()
    {
        parent::setUp();
        $this->withoutMiddleware(
            ThrottleRequests::class
        );
    }
    ...
}
 

21voto

cyclops1101 Points 196

En supposant que vous utilisez les routes de l'API, vous pouvez modifier l'accélérateur dans app / Http / Kernel.php ou le retirer complètement. Si vous devez limiter les autres itinéraires, vous pouvez enregistrer séparément le middleware pour eux.

(exemple ci-dessous: accélération - 60 tentatives puis verrouillage pendant 1 minute)

 'api' => [
        'throttle:60,1',
        'bindings',
    ],
 

9voto

120DEV Points 128

Dans Laravel 5.7

Dynamique De La Limite De Débit Vous pouvez spécifier une dynamique de la demande maximale basée sur un attribut de l'Utilisateur authentifié modèle. Par exemple, si votre modèle d'Utilisateur contient un rate_limit attribut, vous pouvez passer le nom de l'attribut à la manette des gaz middleware de sorte qu'il est utilisé pour calculer le maximum le nombre de requête:

Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

https://laravel.com/docs/5.7/routing#rate-limiting

6voto

Elias Soares Points 2808

Si vous souhaitez désactiver uniquement pour 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 noyau ( app/Http/Kernel.php ), et votre problème sera résolu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X