Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

558
Visualizações
El limitador de velocidad de Laravel limita el acceso incorrectamente después de un solo intento

Estoy trabajando con Laravel 5.8 y quería configurar un limitador de velocidad que limite el acceso a la ruta por minuto y también por dirección IP.

Así que agregué esto a RouteServiceProvider.php :

 protected function configureRateLimiting() { RateLimiter::for('limited', function (Request $request) { return [ Limit::perMinute(500), Limit::perMinute(20)->by($request->ip()), ]; }); }

Y luego lo aplicó a Route:

 Route::get("/", "StaticPages\HomeController@show")->middleware('throttle:limited')->name('home');

Por lo tanto, debería limitar el acceso después de 500 intentos o 20 intentos desde la misma dirección IP.

¡Pero ahora el problema es que muestra 429 Demasiadas solicitudes después de solo UN intento!

No sé por qué limita el acceso después de un solo intento.

Entonces, ¿qué está yendo mal aquí?

¿Cómo puedo configurar correctamente la limitación basada en la dirección IP a 20 y 500 solicitudes por minuto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Creo que ha leído la documentación incorrecta en su intento de implementar un limitador de tasa de solicitud en Laravel. El "acelerador con nombre" solo se introduce a partir de la versión 8. No está disponible en la versión 5.8, consulte la documentación de laravel para esa versión en particular.

Si declaró el acelerador de la siguiente manera:

 Route::get("/", "StaticPages\HomeController@show")->middleware('throttle:20,1')->name('home');

Puede ver en el encabezado HTTP que regresa que dice x-ratelimit-remaining 19 después de la primera solicitud. Por lo tanto, la limitación de velocidad funciona como se supone que debe ser. Sin embargo, si coloca throttle:limited , no entendería qué significa y devuelve -1 para x-ratelimit-remaining , y es por eso que puede abrir la página una vez y devolver el error HTTP 429 para las solicitudes posteriores.

Si aún tiene dudas sobre mi explicación, coloque un die() al comienzo de configureRateLimiting como tal:

 protected function configureRateLimiting() { die(); RateLimiter::for('limited', function (Request $request) { return [ Limit::perMinute(500), Limit::perMinute(20)->by($request->ip()), ]; }); }

Si Laravel realmente ejecuta esa función en particular, su aplicación debería dejar de funcionar antes de que pueda responder a cualquier solicitud. Si no es así, simplemente funcionará bien.

En este punto, solo tiene 2 opciones para implementar su política de limitador de velocidad: 1) implementar su propio middleware de limitador de velocidad; 2) actualice su Laravel al menos a la versión 8.

Para su información, en la esquina superior derecha de la página de documentación de Laravel, puede establecer qué versión de la documentación desea leer.

over 4 years ago · Santiago Trujillo Relatório

0

Creo que necesitas escribir código [respuesta de retorno('Respuesta personalizada...', 429); ] en funciones.

 RateLimiter::for('limited', function (Request $request) { return Limit::perMinute(1000)->response(function () { return response('Custom response...', 429); });

Para obtener más información sobre la limitación de velocidad:

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

over 4 years ago · Santiago Trujillo Relatório

0

Estoy de acuerdo con @Bagus Tesa. El middleware de aceleración de Laravel 5.8 no acepta parámetros excepto max_rate y per_minutes. La limitación de velocidad con nombre se introdujo en Laravel 8 y solo está disponible en versiones >= Laravel 8. Puede implementar su propio middleware de limitación de velocidad o actualizar a Laravel 8 para lograr la funcionalidad esperada.

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda