2011-07-07 7 views
0

私は、Ruby on Railsで完全な認証を実装するのに利用できる宝石がたくさんあることを知っています。Rails完全認証をゼロから

私の場合は、ゼロから実装する必要があります。最後にログインして、現在のログインのタイムスタンプを追跡

1]: Railsの中に認証を実装するが、それらのどれものような他の重要な部分の多くをカバーしない方法を示したチュートリアルがたくさんあります。

2]ユーザーの成功したすべてのログインの実行回数を維持する。

3]ログイン試行に失敗し、一定回数失敗した後にユーザーをロックアウトします。 (私たちは、アカウントをロック解除するための電子メールを送信しません。これは、ユーザーが電話をかけて自分の身元を確認してから、電話の相手がフラグをリセットしてアカウントのロックを解除するからです。 )

4]私の機能を記憶させる。

ありがとうございました!

+0

ログインの合計数を追加することがわからない場合や、ユーザーモデルでログインタイムスタンプを追加することがわからない場合は、ゼロから完全認証宝石を構築するのは難しいかもしれません。 – user482594

+0

と私は彼らが非常に自明なので、それをカバーしないと思う..実装するのは簡単です。 – user482594

+0

私はこれが自明であることを知っています。しかし、私は "セキュリティ"に関するヒントを探しています。ありがとう! –

答えて

1

1]これらのパラメータを追跡するために、テーブルにタイムスタンプフィールドを2つ追加してください:last_login_timeおよびcurrent_login_time。ユーザーログインlast_login_time = current_login_timecurrent_login_time = Time.now

2]あなたのテーブルにlogins_countフィールドを追加し、すべてのログイン

3でそれを増やす] 3.1は、フィールドfails_countを追加し、ログインに失敗するたびに増加し、 3.2のログイン成功時にリセットする場合ブール値フィールド 'ブロック'を追加し、それをtrueに設定します。

+0

おかげでウラジミール。これはまさに私が探していたものでした。 –

2

私は自己宣言されたすべての「初心者」のための落とし穴は、常にゼロからすべてを構築したいと考えていると思います! = P

あなたは正しいですが、そこには多くの認証宝石があります。そして、私はあなたの認証システムが機能的かつ安全であることを確認するために多くの粘着スポットがあるので、あなた自身をロールしようとする前に、少し深く掘り下げることを強くお勧めします。

Devise(https://github.com/plataformatec/devise)をチェックアウトすることをお勧めします。これは私のプロジェクトで使用しているものです。ほとんどの機能をすぐに利用できない場合は、登録コントローラを変更して追加するのはほとんどありません。繰り返しますが、すぐに利用できない場合は、一般的な方法は になります。last_login、current_login、login_count、failed_attemptsをユーザーモデルに追加します。 - devise registrationsコントローラーをオーバーライドし、必要に応じてこれらの値がすべて更新されていることを確認します。

Antherノートでは、Deviseは電子メールでパスワードを回復する機能を提供していますが、簡単に無効にして、ユーザーを強制的にコールイン/ベリファイすることができます。

新しいRails 3.1(まだ正式にリリースされていない)を考慮する必要があります。しかし、より良い認証システムを構築するために、多くのアップデートが含まれていました。詳細はこのレールキャストをご覧ください:http://railscasts.com/episodes/270-authentication-in-rails-3-1

+0

David、あなたの返事をありがとう。これは間違いなく私を続けるでしょう。 –

関連する問題