如何通过电子邮件发送@ user.password“忘记密码?”如果使用has_secure_password

时间:2012-10-23 19:51:11

标签: ruby-on-rails

我正在尝试通过ActionMailer向忘记密码的用户发送电子邮件。他们输入他们的电子邮件并按提交,并且应该在电子邮件中向他们发送带有密码的电子邮件。但是,由于我有has_secure_password,我猜测password_digest不允许我提取密码。我收到一封电子邮件说:

Your login information:

Email: edmai@syr.edu

Password: 

所以看起来rails正在做些什么来阻止我取出密码。这是我的文件:

电子邮件模板:

Dear <%= @user.name %>,

<p>
    You recently made a request for a lost password. Please remember to keep your passwords recorded in a safe place.
</p>

<p>
    Your login information: <br>
    Email: <%= @user.email %> <br>
    Password: <%= @user.password %> <br>
</p>

<p>
    Sincerely, <br>
    Pholder Staff
</p>

用户模型

class User < ActiveRecord::Base

has_secure_password
attr_accessible :email, :name, :password, :password_confirmation, :profilepic
validates_presence_of :password, :on => :create

如果您需要我的更多文件,请告诉我

1 个答案:

答案 0 :(得分:2)

has_secure_password使用bcrypt哈希您的用户密码。这样就不会在您的数据库中存储纯文本密码(永远不会发生这种情况)。有关该方法的一些信息,请访问:http://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html

像@apneadiving所说,你需要重置密码并向用户发送密码重置链接。

按顺序观看这两个Railscast,他们可能会帮助你:

  1. http://railscasts.com/episodes/270-authentication-in-rails-3-1
  2. http://railscasts.com/episodes/274-remember-me-reset-password