2

我正在尝试通过 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

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

4

1 回答 1

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
于 2012-10-23T21:05:49.883 回答