has_secure_password
in railsは、データベースのフィールドをチェック:password
して:password_confirmation
からログに記録することにより、ユーザーのサインアップに適しています。:password_digest
ただし、メールアドレスを確認できるようにしたい場合 (確認メールを送信することによって)、レールでこれを行うにはどうすればよいでしょうか?
3 に答える
通常、電子メール アドレスを確認するには、関連する電子メール アドレスに (リンク付きで) 電子メールを送信し、ユーザーはリンクをクリックして確認します。通常、リンクには、その電子メール アドレスを一意に識別するために使用されるトークンが含まれています。したがって、verification_tokenフィールドをモデルに追加できます。また、コントローラー アクションを追跡して使用するために、verification_email_sent_atおよびverified_atフィールドも追加できます。
def verify_email @user = User.find_by_verification_token(params[:verification_token]) @ユーザーの場合 @user.verification_token = nil @user.verification_email_sent_at = nil @user.verified_at = Time.now @user.save # 上記の行は、@user.verify のようなメソッドの一部にすることができます! redirect_to "/" そうしないと ... 終わり 終わり
また、認証ソリューションを構築する代わりに、以下をご覧になることを強くお勧めします
https://github.com/plataformatec/devise
使い方はとても簡単です。
Rishav Rastogiの応答に追加するには、適切なチェックを追加して、検証パラメーターがサニタイズされ、null でないことを確認してください (または、null 検証トークンを渡す誰かが、そのverification_token
列のユーザーのアカウントにアクセスできるようになります)。無効です。
verified_at
安全なチェックで列を利用することも当然です。
(評判が悪いため、彼の答えについてコメントすることはできません)
これはかなり大きな質問であり、それがと関係があるかどうかはわかりませんhas_secure_password
。要点は、たとえば、ユーザーモデルにフィールドが必要でconfirmed
あり、確認メールを送信するメーラーを作成することです。このメールには、ユーザーを確認済みとしてマークするコントローラーへのリンクが含まれています。
開始するには、をチェックすることをお勧めしますActionMailer guide
。