Estoy buscando el motor de limitación de velocidad para mi aplicación de rieles 3. He encontrado algunos pero eso no es lo que necesito. He encontrado joya de rack-throttle y joya de curbit. Parece que el acelerador de cremallera funciona para cada solicitud a la aplicación de rieles, pero debo limitar las solicitudes solo a una acción. Curbit fue actualizado por última vez hace dos años. ¿Alguien puede decirme sobre cualquier otro motor de limitación de velocidad que pueda usar? Tenga en cuenta que debería funcionar con el almacenamiento en caché.Limitación de velocidad para controladores de rieles
Respuesta
Bueno, finalmente el acelerador de cremallera es una buena solución.
Puede hacerlo de la siguiente manera. Debes definir tu limitador personalizado. Se puede basarse en cualquiera de los siguientes limitadores
Rack::Throttle::Limiter
Rack::Throttle::Interval
Rack::Throttle::Hourly
Rack::Throttle::Daily
todo lo que necesita hacer es derivar de una de las clases anteriores para definir la lógica personalizada. Por ejemplo:
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
#custom logic here
end
end
se debería poner este archivo en la ruta RAILS_ROOT/lib
. Luego, en el archivo application.rb
, debe especificar qué clase usar como limitador. Por ejemplo, si desea aplicar limitador sólo a una acción que puede hacerlo de la siguiente manera:
#lib/custom_limiter.rb
class CustomLimiter < Rack::Throttle::Interval
def allowed?(request)
path_info = Rails.application.routes.recognize_path request.url rescue {}
if path_info[:controller] == "application" and path_info[:action] == "check_answer"
super
else
true
end
end
end
#config/application.rb
class Application < Rails::Application
...
#Set up rate limiting
config.require "custom_limiter"
config.middleware.use CustomLimiter, :min => 0.2
...
end
Es posible que tenga que tomar this en consideración
Esperamos que esto sea útil
UPD :
es posible que desee echa un vistazo a otra solución: rack-attack
código incorrecto! cambiar a config.require "custom_failure"
–
CelinHC
fijo. todo parece estar bien ahora – RomanKapitonov
Gracias por el paso a paso. Solo para saber un poco más sobre la configuración. ¿Estás utilizando un tipo de DB para almacenar los contadores? – Eduardo
rack-throttle
hace lo que quiere. Subclase Limiter
y defina su propio método #allowed?
. Simplemente devuelva true si la solicitud no es la acción que desea que sea el límite y no la cuente hasta el límite. Eche un vistazo al daily.rb
. Redefina #cache_set
para que no guarde los que no coincidan con la ruta que desea limitar.
Lo he anulado, y colocé el archivo en el directorio lib y reinicié el servidor pero no funciona. 'class CustomLimiter
- 1. Limitación de velocidad para evitar un comportamiento malicioso en ExpressJS
- 2. Rieles ¿Lógica en controladores?
- 3. Limitación de velocidad/prohibición de direcciones IP en IPv6
- 4. ¿Qué es un buen algoritmo de limitación de velocidad?
- 5. ¿Los controladores de rieles son multiproceso? Thread.exclusive en los controladores
- 6. Rieles: ¿dos controladores o acciones adicionales?
- 7. ¿Cuáles son las formas más comunes de implementar la limitación de velocidad/solicitud de API web?
- 8. rieles vías de estructuración admin/usuario/controladores públicas
- 9. ¿Cómo implementar la limitación de velocidad basada en un token de cliente en Spring?
- 10. ¿Cuál es la mejor manera de implementar un algoritmo de limitación de velocidad para las solicitudes web?
- 11. ¿Cómo puedo implementar la limitación de velocidad con Apache? (solicitudes por segundo)
- 12. Cliente de limitación de tasa PHP
- 13. Creación de una API para un sitio ASP.NET MVC con limitación de velocidad y almacenamiento en memoria caché
- 14. limitación random.shuffle de Python
- 15. ¿Limitación de JSON?
- 16. velocidad de setRegion para MKMapView
- 17. Dónde poner los métodos reutilizables para el acceso de los controladores en los rieles
- 18. Solución alternativa para la limitación de atributo genérico de C#
- 19. ¿Hay alguna limitación de tamaño para la publicación de Ajax?
- 20. La limitación de Mono Runtime
- 21. nginx auth_basic limitación de tiempo
- 22. Plugin de editor de velocidad para Eclipse?
- 23. Prueba de tipeo de velocidad para programadores
- 24. ¿Ajuste de rendimiento de rieles para producción?
- 25. creando Rdoc para una aplicación de rieles
- 26. Scrum: productos inacabados y velocidad de velocidad
- 27. Manera fácil de cambiar el nombre de los controladores de rieles
- 28. Rieles: ¿Dónde definir un método auxiliar que estará disponible para varios controladores?
- 29. Lista de controladores dbexpress gratuitos para Delphi
- 30. Controladores de respuesta del servidor para google.script.run
¿Qué pasa con la regulación en el servidor web (apache?) – Roger
@Rogier El proyecto se implementará en heroku – RomanKapitonov