2

has_secure_passwordin railsは、データベースのフィールドをチェック:passwordして:password_confirmationからログに記録することにより、ユーザーのサインアップに適しています。:password_digestただし、メールアドレスを確認できるようにしたい場合 (確認メールを送信することによって)、レールでこれを行うにはどうすればよいでしょうか?

4

3 に答える 3

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

使い方はとても簡単です。

于 2012-06-23T20:36:06.147 に答える
1

Rishav Rastogiの応答に追加するには、適切なチェックを追加して、検証パラメーターがサニタイズされ、null でないことを確認してください (または、null 検証トークンを渡す誰かが、そのverification_token列のユーザーのアカウントにアクセスできるようになります)。無効です。

verified_at安全なチェックで列を利用することも当然です。

(評判が悪いため、彼の答えについてコメントすることはできません)

于 2015-08-14T19:46:22.953 に答える
0

これはかなり大きな質問であり、それがと関係があるかどうかはわかりませんhas_secure_password。要点は、たとえば、ユーザーモデルにフィールドが必要でconfirmedあり、確認メールを送信するメーラーを作成することです。このメールには、ユーザーを確認済みとしてマークするコントローラーへのリンクが含まれています。

開始するには、をチェックすることをお勧めしますActionMailer guide

于 2012-06-23T20:30:54.027 に答える