Rails3.2 - 如何自定义Devise以在用户注册时生成随机密码?

时间:2012-06-07 17:07:17

标签: ruby-on-rails devise

我试图自定义Devise注册过程以生成随机密码并使用确认邮件发送它。

我已经做的是覆盖默认的Devise:validtable并在需要时生成一个新的随机密码。

  before_validation :password_generation

  def password_generation
       password_confirmation = password = Devise.friendly_token.first(7) if password.nil? || password.blank?
  end

现在我的问题是将新生成的随机密码包含在原始确认邮件中。

在定制新用户流程时是否有可能跟上Devise的原始可用性,或者我应该从头开始构建身份验证过程?

谢谢, 哈达尔。

1 个答案:

答案 0 :(得分:2)

(四个月太迟了,但也许其他人可以使用它)

您需要做的主要是将默认的Devise邮件程序和视图复制到您的项目中,并在config/initializers/devise.rb中指定config.mailer中的本地班级。此时,您可以根据需要自定义电子邮件。 (请注意,Devise使用术语resource作为抽象,但大部分意味着用户的实例。)

唯一的技巧是找到一种方法来记住在创建新用户帐户的时间与生成和发送电子邮件之间生成的密码。在保存用户记录时,Devise将存储的是密码的加密版本。我必须遵循Devise中的逻辑路径来确定,但我敢打赌你可以将它存储在User上的实例变量中,也许是params或者flash。对此要非常小心;你希望这个值尽可能短暂 - 大概就是请求的生命周期。