has_secure_password和电子邮件验证

时间:2012-06-23 20:25:13

标签: ruby-on-rails ruby verification

通过选中has_secure_password:password然后在数据库中记录:password_confirmation字段,rails中的

:password_digest可以很好地注册用户。但是,如果我希望能够验证电子邮件地址(通过发送电子邮件确认),我将如何使用rails执行此操作?

3 个答案:

答案 0 :(得分:3)

通常,为了验证电子邮件地址,您可以向相关的电子邮件地址(带有链接)发送电子邮件,然后用户单击链接/进行验证。该链接通常包含用于唯一标识该电子邮件地址的令牌。因此,您可以在模型中添加 verification_token 字段,也可以添加 verification_email_sent_at verified_at 字段,以跟踪并使用控制器操作

   def verify_email
     @user = User.find_by_verification_token(params[:verification_token])
     if @user
        @user.verification_token = nil
        @user.verification_email_sent_at = nil
        @user.verified_at = Time.now
        @user.save
        # above lines can be part of method like @user.verify!
        redirect_to "/"
     else
        ...
     end
   end

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

https://github.com/plataformatec/devise

它非常简单易用。

答案 1 :(得分:1)

要添加到Rishav Rastogi的响应,请确保添加相应的检查以确保验证参数都已清理且不为空(否则,传入空验证令牌的人可以获得访问verification_token列为空的用户的帐户。

您还可以在安全检查中使用verified_at列。

(由于缺乏声誉,我无法对他的answer发表评论)

答案 2 :(得分:0)

这是一个非常大的问题,我不确定它与has_secure_password有什么关系。要点是你需要一个用户模型上的字段,比如说confirmed,然后制作一个发送确认电子邮件的邮件,该电子邮件有一个指向控制器的链接,该控制器会将用户标记为已确认。

我建议您查看ActionMailer guide以开始使用。