Уменьшить количество запросов на пользователя (с атакой в ​​стойку и разработкой)

Я использую https://github.com/kickstarter/rack-attack/ для регулирования запросов к определенным URL.

Документы по Rack-атакам показывают, как регулировать IP-адреса или параметры запроса, но я бы хотел, чтобы они обрабатывали запросы на пользователя. Таким образом, независимо от IP, пользователь должен иметь возможность сделать не более n запросов за определенный промежуток времени.

Мы используем devise для аутентификации, и я не могу придумать простой способ уникальной идентификации пользователей на основе запроса.

Должен ли я хранить идентификатор пользователя в сессии / куки? Может быть, уникальный хэш? Что вы думаете о лучшем способе сделать это?

1 ответ

Решение

Догадаться. Devise уже хранит идентификатор пользователя в сеансе. Код будет выглядеть примерно так:

Rack::Attack.throttle('something', limit: 6, period: 60.seconds) do |req|
  req.env['rack.session']["warden.user.user.key"][0][0] if some_condition?
end
Другие вопросы по тегам