has_secure_password
和:password
然后在数据库中记录:password_confirmation
字段,rails中的 :password_digest
可以很好地注册用户。但是,如果我希望能够验证电子邮件地址(通过发送电子邮件确认),我将如何使用rails执行此操作?
答案 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
以开始使用。