has_secure_password在 Rails 中,通过检查然后记录数据库中的字段来注册用户:password非常:password_confirmation有效:password_digest。但是,如果我希望能够验证电子邮件地址(通过发送电子邮件确认),我将如何使用 rails 来做到这一点?
1286 次
3 回答
3
通常要验证电子邮件地址,您向相关电子邮件地址发送电子邮件(带有链接),用户单击链接/验证它。该链接通常包含一个用于唯一标识该电子邮件地址的令牌。因此,您可以在模型中添加verify_token字段,也可以添加verify_email_sent_at和verify_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 回答