0

私のチームは現在、ユーザー認証に Authlogic を使用しています。これは、6 回の failed_login_attempts の後にユーザーのアカウントを無効にします。そのようなユーザーのアカウントを 15 分後に再度有効にしたいと考えています。問題は、1 時間の cron ジョブと毎日の cron ジョブしか提供しない Rails クラウド ホスト Heroku にデプロイしていることです。私が持っていない数分でインクリメントする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 に答える