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 回答