将密码重置发送到不同的电子邮件 - 设计
Send Password Reset to a Different Email - Devise
我在 rails 5 上使用 ruby 和设计,我需要将密码重置电子邮件发送到与我的用户 table 中存储的不同的电子邮件。如何实现?
请注意:这是非常不推荐的实现方式。
它不在最佳实践的范围内。
它又脏又脆弱。
但如果你真的需要实现它,无论这些措施有多肮脏,就是这样。
好吧,将重置指令发送到其他电子邮件的要求已经够奇怪了。真的是万不得已吗?
无论如何,
您没有指定 Devise 版本,但该行为不太可能改变太多,所以让我们看看当前的 master 是如何发送电子邮件的:
def headers_for(action, opts)
headers = {
subject: subject_for(action),
to: resource.email,
因此,getter 有点硬编码。
不过,可以创建一个令牌并像 Devise 那样设置它:
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 耦合过多。
我在 rails 5 上使用 ruby 和设计,我需要将密码重置电子邮件发送到与我的用户 table 中存储的不同的电子邮件。如何实现?
请注意:这是非常不推荐的实现方式。
它不在最佳实践的范围内。
它又脏又脆弱。
但如果你真的需要实现它,无论这些措施有多肮脏,就是这样。
好吧,将重置指令发送到其他电子邮件的要求已经够奇怪了。真的是万不得已吗?
无论如何,
您没有指定 Devise 版本,但该行为不太可能改变太多,所以让我们看看当前的 master 是如何发送电子邮件的:
def headers_for(action, opts)
headers = {
subject: subject_for(action),
to: resource.email,
因此,getter 有点硬编码。
不过,可以创建一个令牌并像 Devise 那样设置它:
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 耦合过多。