0

我的团队目前正在使用 Authlogic 进行用户身份验证,这会在 6 次 failed_login_attempts 后禁用用户帐户。我想在 15 分钟后重新启用此类用户的帐户。问题是我们正在部署到 Rails 云主机 Heroku,它只提供一小时的 cron 作业和每日的 cron 作业。我似乎需要一个在几分钟内增加的 cron 作业,而我没有,否则我将不得不冻结一个线程以等待超时,出于明显的性能原因,甚至不会考虑.

我还有其他选择来实现这种特定的用户体验吗?

4

2 回答 2

5

如果你已经加载了 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

类似的东西。

于 2010-02-02T18:08:28.010 回答
1

实际上有一种声明方式可以做到这一点。在您的 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

于 2010-02-12T14:32:17.583 回答