ruby-on-rails – 从Devise 3中的User资源获取确认URL

ruby-on-rails – 从Devise 3中的User资源获取确认URL,第1张

概述所以Devise 3.1现在在数据库中存储摘要令牌.我使用存储的令牌向注册用户发送后续电子邮件,如果用户尚未确认他的电子邮件,我会附加一个带有令牌的链接: Please confirm your account etc.www.example.com?confirmation_token=<%= user.confirmation_token %> 问题是现在user.confirmation_ 所以Devise 3.1现在在数据库中存储摘要令牌.我使用存储的令牌向注册用户发送后续电子邮件,如果用户尚未确认他的电子邮件,我会附加一个带有令牌的链接:

Please confirm your account etc.www.example.com?confirmation_token=<%= user.confirmation_token %>

问题是现在user.confirmation_token已加密,我无法使用@token var,因为此 *** 作不是来自Devise Controller.

最终,我需要一种方法从用户资源中检索正确的确认URL,而无需通过设计控制器.

有没有办法做到这一点?

编辑:

由于目前没有明确的方法,我在Devise的Github上提出了一个问题,以获得更多想法:

https://github.com/plataformatec/devise/issues/2903

解决方法 这取决于您何时发送电子邮件.如果您在发送通常的确认电子邮件的同时执行此 *** 作(因此,在创建用户的同一执行循环中),您应该能够通过将此添加到您的用户模型来访问该令牌:

def get_raw_confirmation_token  return @raw_confirmation_tokenend

如果您稍后发送后续电子邮件,则无法检索现有的确认令牌.出于安全目的,它作为单向哈希存储在数据库中.但是,你可以做的是生成一个新的确认令牌,并在你的后续电子邮件中发送.向User模型添加一个新方法,如下所示:

def generate_new_confirmation_token  unless @raw_confirmation_token    generate_confirmation_token!  end  return @raw_confirmation_token       end

这将使您的旧令牌无效,但它允许您将新的令牌嵌入到电子邮件中. Devise还提供重新发送旧确认电子邮件的功能,只需在您的用户对象上调用resend_confirmation_instructions即可重新发送电子邮件 – 如果确认令牌已过期,它将为您生成一个新的确认令.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 从Devise 3中的User资源获取确认URL全部内容,希望文章能够帮你解决ruby-on-rails – 从Devise 3中的User资源获取确认URL所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1276118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存