Как мне смоделировать 15-минутный тайм-аут с ограниченным доступом к cron (на Heroku)? - PullRequest
0 голосов
/ 02 февраля 2010

Моя команда в настоящее время использует Authlogic для аутентификации пользователя, которая отключает учетную запись пользователя после 6 fail_login_attempts. Я хочу снова включить учетную запись такого пользователя через 15 минут. Проблема в том, что мы развертываем на облачном хосте Rails, Heroku, который предлагает только одночасовое задание cron и ежедневное задание cron. Мне кажется, мне нужна работа cron, которая увеличивается за считанные минуты, чего у меня нет, или мне пришлось бы заморозить поток, чтобы сидеть и ждать время ожидания, что даже не будет рассматриваться по очевидным причинам производительности .

Есть ли у меня какие-либо другие варианты для реализации этого конкретного пользовательского опыта?

Ответы [ 2 ]

5 голосов
/ 02 февраля 2010

Если у вас уже загружен current_user, вы можете просто сделать это:

if current_user.failed_login_attempts >= 6 && current_user.failed_login_at < 15.minutes.ago
    current_user.update_attribute(:failed_login_attempts, 0)
end

Что-то в этом роде.

1 голос
/ 12 февраля 2010

На самом деле существует декларативный способ сделать это.В вашем классе UserSession среди доступных параметров есть failed_login_ban_for, который проверяет последний updated_at (который затрагивается даже при неудачных попытках), поэтому успешная попытка, например, через 15 минут после фиктивной попытки, теперь будет успешной:

class UserSession < Authlogic::Session::Base
  logout_on_timeout true
  consecutive_failed_logins_limit 5
  failed_login_ban_for 15.minutes
end

Для получения дополнительной информации см. Rdoc: http://rdoc.info/projects/binarylogic/authlogic

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...