繁体   English   中英

将密码重置发送到其他电子邮件-设计

[英]Send Password Reset to a Different Email - Devise

我在devise的Rails 5上使用ruby,我需要将密码重置电子邮件发送到不同于存储在User表中的电子邮件。 如何做到这一点?

请注意 :这是非常不推荐的实现方式。
它不在最佳实践的范围内。
它又脏又脆弱。
但是,如果您真的需要实现它,那么无论这些措施有多肮脏,就是这样。

好了,将重置指令发送到其他电子邮件的要求已经很奇怪了。 真的是不得已吗?

无论如何,

您尚未指定Devise版本,但是该行为不太可能改变太多,因此让我们来使用当前的master并查看其发送电子邮件的方式:

https://github.com/plataformatec/devise/blob/f39c6fd92774cb66f96f546d8d5e8281542b4e78/lib/devise/mailers/helpers.rb#L31

def headers_for(action, opts)
    headers = {
      subject: subject_for(action),
      to: resource.email,

因此,吸气剂有些硬编码。

但是,可以像Devise一样创建令牌并将其设置为:

https://github.com/plataformatec/devise/blob/d1948b79d3e933253baa753bd033c92171c0a7d0/lib/devise/models/recoverable.rb#L89

def set_reset_password_token
  raw, enc = Devise.token_generator.generate(self.class, :reset_password_token)

  self.reset_password_token   = enc
  self.reset_password_sent_at = Time.now.utc
  save(validate: false)
  raw
end

当在来源中找到Devise如何发送它并尝试以某种方式复制它(但使用您的自定义电子邮件)时。

我认为,在这种情况下,邪恶程度较小的只是将自己的邮件程序实现为那种与Devise使用相同URL的重置指令。
否则,您可能会与当前版本的Devise结合太多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM