2

has_secure_password在 Rails 中,通过检查然后记录数据库中的字段来注册用户:password非常:password_confirmation有效:password_digest。但是,如果我希望能够验证电子邮件地址(通过发送电子邮件确认),我将如何使用 rails 来做到这一点?

4

3 回答 3

3

通常要验证电子邮件地址,您向相关电子邮件地址发送电子邮件(带有链接),用户单击链接/验证它。该链接通常包含一个用于唯一标识该电子邮件地址的令牌。因此,您可以在模型中添加verify_token字段,也可以添加verify_email_sent_atverify_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 等方法的一部分!
        重定向到“/”
     别的
        ...
     结尾
   结尾

另外,我强烈建议不要构建您的身份验证解决方案,而是看看

https://github.com/plataformatec/devise

它的使用非常简单。

于 2012-06-23T20:36:06.147 回答
1

要添加到Rishav Rastogi的响应中,请确保添加适当的检查以确保验证参数既已清理且不为空(否则,传入空验证令牌的人可以访问其verification_token列的用户的帐户一片空白。

您还应该verified_at在安全检查中使用该列。

(由于缺乏声誉,我无法评论他的回答)

于 2015-08-14T19:46:22.953 回答
0

这是一个很大的问题,我不确定它与has_secure_password. 要点是您将需要用户模型上的一个字段,例如confirmed,并制作一个发送确认电子邮件的邮件程序,该邮件具有指向控制器的链接,该控制器会将用户标记为已确认。

我建议您查看ActionMailer guide开始。

于 2012-06-23T20:30:54.027 回答