2016-10-25 1 views
0

Dire que j'ai une manette des gaz comme ceci:Comment fonctionne la manette des gaz en rack?

throttle('emails/ip', :limit => 5, :period => 24.hours) do |req| 
    if req.path == '/users/check_email_availability' && req.post? 
    req.ip 
    end 
end 

Qu'est-ce qui se passe si quelqu'un continue d'essayer d'accéder à ce lien après avoir étranglé? Seront-ils bloqués pendant encore 24 heures? Ou est-ce que la gemme ne verra que ses 5 dernières demandes? Quand deviennent-ils sans protection?

Répondre

0

Chaque demande, pour laquelle vous renvoyez une valeur truthy, est mise en cache avec un horodatage, même lorsqu'une demande est bloquée. Pour déterminer si une demande est bloquée ou non rack-attack compte les demandes dans la plage de temps :period.

Donc rack-attack ne bloque pas pour :period. Au lieu de cela, il compte toutes les demandes dans :period et si ce nombre est supérieur à :limit, la demande est bloquée.