web-dev-qa-db-fra.com

Désactiver le limiteur de vitesse à Laravel?

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.

23
SimpleJ

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. 

54
EddyTheDove

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',
    ],
9
cyclops1101

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.

6
Elias Soares

À 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 () {
        //
    });
});

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

2
120DEV

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
        );
    }
    ...
}
0
Mostafa Bahri